@yibi/owner-agent-minutes
v0.5.0
Published
Install the owner-local Feishu Minutes governance Skill for Codex.
Readme
@yibi/owner-agent-minutes
Install the owner-local Feishu Minutes governance Skill for Codex.
npx --yes @yibi/owner-agent-minutes@latest installThe default destination is $CODEX_HOME/skills/normalize-work-resource-name, or ~/.codex/skills/normalize-work-resource-name when CODEX_HOME is unset. Use a different skills directory when needed:
npx --yes @yibi/owner-agent-minutes@latest install --target /path/to/skillsInspect the plan without writing:
npx --yes @yibi/owner-agent-minutes@latest install --dry-run --jsonVerify an installation:
npx --yes @yibi/owner-agent-minutes@latest verify \
--path ~/.codex/skills/normalize-work-resource-name \
--jsonPrint the owner-agent input/output contract:
npx --yes @yibi/owner-agent-minutes@latest contractThe installer has no runtime dependencies, does not read Feishu credentials, does not call Feishu, and does not implicitly install a scheduler. It refuses to overwrite an existing Skill unless --force is explicit; forced replacement preserves the prior directory as a timestamped backup.
The installed Skill enforces complete fixed-cutoff discovery from 2026-07-01 using monthly paginated slices, stable-token reads, native creation-time admission, non-transcript object grounding, exact native rename readback, owner-local idempotency, and post-readback publication boundaries. Live Minutes access still requires the invoking owner's authenticated lark-cli user identity and explicit authority for any write. Publication uses the user identity for target-group history deduplication and the configured app bot identity for sending and returned-message readback; it never falls back to sending as the user. A uniquely bound live CRM internal collaboration group is an eligible canonical publication target.
Owner-local scheduler
The package can install a user-level macOS LaunchAgent. The scheduler is system-level infrastructure, not a Codex project and not an AgenticCRM Manager lane.
First create a disabled scaffold:
npx --yes @yibi/owner-agent-minutes@latest scheduler scaffold \
--profile <owner-profile> \
--jsonThe installing owner Agent must then edit the generated config.json and task.md:
- set an absolute owner-local working directory;
- set
agent_commandas an argv array whose first entry is the absolute Codex/Agent executable; - pass the generated
agent_output_schemawith Codex--output-schemaandagent_result_filewith--output-last-message; - describe the owner's Minutes discovery sources, maximum candidate count, identity/profile, optional publication mapping, and configured publication bot in
task.md; - set
enabled=trueonly after those values and the owner'slark-cliauthorization have been verified; - keep access tokens, refresh tokens, passwords, cookies, authorization URLs, and QR codes out of both files.
Validate before loading:
npx --yes @yibi/owner-agent-minutes@latest scheduler validate \
--config "$HOME/Library/Application Support/OwnerAgentMinutes/<owner-profile>/config.json" \
--jsonInstall the stable runtime and load the LaunchAgent:
npx --yes @yibi/owner-agent-minutes@latest scheduler install \
--config "$HOME/Library/Application Support/OwnerAgentMinutes/<owner-profile>/config.json" \
--jsonOperational controls:
npx --yes @yibi/owner-agent-minutes@latest scheduler status --profile <owner-profile> --json
npx --yes @yibi/owner-agent-minutes@latest scheduler disable --profile <owner-profile> --json
npx --yes @yibi/owner-agent-minutes@latest scheduler enable --profile <owner-profile> --jsonThe LaunchAgent wakes one owner Agent per interval and also watches its config, task, and installed runtime files. The runtime enforces a minimum five-minute interval, one active run per profile, a bounded timeout, stable copied scheduler code, and a schema-constrained operational receipt. A generation change never interrupts an active Agent: the current generation drains, then the runner immediately re-executes the newest on-disk generation without waiting for the next interval. An idle scheduler wakes immediately on a watched change. last-run.json holds the latest result and runs.jsonl is the append-only history. Each receipt reports discovery, naming, and publication counts plus per-resource terminal outcomes. A missing or invalid Agent result fails the run instead of appearing as completed. When publication is enabled, the owner Agent must verify the configured bot and its target-group membership before sending.
The scheduler discards arbitrary Agent stdout/stderr. Receipts may contain owner-local titles and sanitized evidence/message IDs, but reject raw Minutes tokens, URLs, transcript bodies, credentials, and authorization material. Resource correlation uses a SHA-256 token fingerprint. When publication is enabled, the owner Agent must bootstrap the local hashed ledger from target-group history, send only missing retrieval anchors, read messages back, and then record success. Discovery, provenance sources, owner authentication, candidate bounds, and publication destination selection remain owner-Agent configuration.
