elanous 0.2.10 → 0.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/pwa/out/404/index.html +1 -1
- package/apps/pwa/out/404.html +1 -1
- package/apps/pwa/out/_next/static/-6XrAoD3eU7NyMHAE4xPS/_buildManifest.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1147-466ec15afacc1a65.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1159-0c5ef8bc21cb6afb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1394-ee3795b112907122.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1452.93700483b9d4fc61.js +9 -0
- package/apps/pwa/out/_next/static/chunks/{6062-73e68343a9814f6a.js → 1829-b453a1b22d3999bb.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/2176-c379e3ebce874151.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2426.8c6ee0c668d53def.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3170-7ec60a56fa0e4728.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3278-ae6ef084769f6195.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3454-988a53dac60a1763.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3638-aa80b4641ea439db.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3735-fe3402553ac1c9c6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3869-3cd46526879f454c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/390.c373e31b3b9d0c41.js +5 -0
- package/apps/pwa/out/_next/static/chunks/3992-2e522a8ac5f2afde.js +25 -0
- package/apps/pwa/out/_next/static/chunks/4215-c9d91dd644ec1719.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4508-5d0161d1e724d735.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4685-c3c1c625b71accd1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4733-623a79345b171e1c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4883.3bd969ea1d3aaaff.js +2 -0
- package/apps/pwa/out/_next/static/chunks/5532.6899a12958a89b72.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{8067-87ce253ec2f23697.js → 5845-e6c003ce8d5fd36a.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/5978-b27004c677119115.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{8046cadf-211ca3c0e00f2b72.js → 5cd7e3a9-404fd6b8d0ecd44c.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/6048-4c5c33579bc4ef78.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6303-422dbf0f67c72aac.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6751-bb3595948b2e311b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7274-19b7279f18b47ab3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7277-0b2fc7c16ba2d64b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{4323.c5dfb6f503304775.js → 7334.a6679d9168f37aa8.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/7551-a0e0707b79164ddd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7758-0b018a9e4fc56200.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7777-79f845045aa1ed86.js +1 -0
- package/apps/pwa/out/_next/static/chunks/79f8be9e-957d68913b590b08.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8025-cc24ee5d8f2fb6f8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8039-df92e08fede5de8f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8206-c6684dcde12be721.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8421-1c4acfb1395a0edf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8605-0259994816604c49.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8725.bf46bb1395dd0fa2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8734-252d511cd276c0dc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8834-ca1cb09c1cb1a6bf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2415.ed6428ff334c7ce2.js → 9269.d2a4795bc6812717.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/9538-2816b90923606459.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9656-c1540088f5859c80.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9906-482c6619b3fdda20.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9920-5cfdc5e8fd209825.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-d16993889b125c42.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-cb169620945d1952.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-cefe8169e36cf62a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/board/page-d2e35228bc497119.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/botlab/{page-54b32bd27726588d.js → page-5c05b0da4bc1392c.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-e0ccdb576812b523.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/chat/page-813c4a52c9d05ca8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/consult/page-4731f2c215358937.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/control/page-a022b257950f39e6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-a2ffc717e04b8b0a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/editor/page-b59ee4e70fc18fcf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/exec/page-a67e11ba962337b5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/field/page-c172dabd796eb7a3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-d16993889b125c42.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/inside/page-1efd0cb9e0ed9d13.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/intake/page-d5dc7ff69a37b4cf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/layout-e71c84189e8c683e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live/page-1d6a533ce5a6efcb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/market/page-dfca9b7d2de0b135.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-793fa536b3a6ef37.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/morning/page-6dd3bfbbde2a5c2c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/not-found-490653e8d4cc8852.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-77447356baad75d2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-29e961191f6057df.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-c822f55b884d9104.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-fa4ccfc432424e52.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-6d604227e1664b71.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/page-9c7e8f744a765daf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-4048543b4b7ad5e0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-4c3a3126abed551a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-64b0aecb1ca75e75.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-4292d0149020e8a7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/page-db14d0be7f1c460c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-e5d8072cd7cfef73.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-d16993889b125c42.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/page-9547b5cec7cf76bf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/share/page-e6dcb83265530636.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-45248f08d6aecae5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-2cddeb9e2aeedc55.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/term/page-e297866051595d81.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/today/page-baba2e047872fb0f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/trace/page-e895da4ec9cac345.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/vault/page-4344faf20216233b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-698bb29f11864b89.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-bd6a6dc1ddc273f2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-2e9e2fb01c9da1c9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-d62ceb13411ebba4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2ea96958-e8c7e112de50b067.js → f48170cc-d05d28bf87a43bf4.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/framework-172630e6aa5e2d7f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-app-f0fe2d7477845181.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-fc98ac70b44eccb0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_app-5bd7f10271f72413.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_error-97d0d85ea05fef9b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/webpack-9e4d02d567b98240.js +1 -0
- package/apps/pwa/out/_next/static/css/128fb7fb670b2fbf.css +1 -0
- package/apps/pwa/out/approvals/index.html +1 -1
- package/apps/pwa/out/approvals/index.txt +23 -23
- package/apps/pwa/out/autopilot/index.html +1 -1
- package/apps/pwa/out/autopilot/index.txt +23 -23
- package/apps/pwa/out/board/index.html +1 -1
- package/apps/pwa/out/board/index.txt +23 -23
- package/apps/pwa/out/botlab/index.html +1 -1
- package/apps/pwa/out/botlab/index.txt +22 -22
- package/apps/pwa/out/bots/index.html +1 -1
- package/apps/pwa/out/bots/index.txt +22 -22
- package/apps/pwa/out/chat/index.html +1 -1
- package/apps/pwa/out/chat/index.txt +22 -22
- package/apps/pwa/out/consult/index.html +1 -1
- package/apps/pwa/out/consult/index.txt +23 -23
- package/apps/pwa/out/control/index.html +1 -1
- package/apps/pwa/out/control/index.txt +23 -23
- package/apps/pwa/out/design-check/index.html +1 -1
- package/apps/pwa/out/design-check/index.txt +23 -23
- package/apps/pwa/out/editor/index.html +1 -1
- package/apps/pwa/out/editor/index.txt +23 -23
- package/apps/pwa/out/exec/index.html +1 -1
- package/apps/pwa/out/exec/index.txt +23 -23
- package/apps/pwa/out/field/index.html +1 -1
- package/apps/pwa/out/field/index.txt +23 -23
- package/apps/pwa/out/healthz +1 -1
- package/apps/pwa/out/index.html +1 -1
- package/apps/pwa/out/index.txt +22 -22
- package/apps/pwa/out/inside/index.html +1 -0
- package/apps/pwa/out/inside/index.txt +31 -0
- package/apps/pwa/out/intake/index.html +1 -1
- package/apps/pwa/out/intake/index.txt +23 -23
- package/apps/pwa/out/live/index.html +1 -1
- package/apps/pwa/out/live/index.txt +23 -23
- package/apps/pwa/out/market/index.html +1 -1
- package/apps/pwa/out/market/index.txt +22 -22
- package/apps/pwa/out/missions/placeholder/index.html +1 -1
- package/apps/pwa/out/missions/placeholder/index.txt +22 -22
- package/apps/pwa/out/morning/index.html +1 -1
- package/apps/pwa/out/morning/index.txt +23 -23
- package/apps/pwa/out/observatory/index.html +1 -1
- package/apps/pwa/out/observatory/index.txt +23 -23
- package/apps/pwa/out/ops/checklist/index.html +1 -1
- package/apps/pwa/out/ops/checklist/index.txt +22 -22
- package/apps/pwa/out/ops/release/index.html +1 -1
- package/apps/pwa/out/ops/release/index.txt +22 -22
- package/apps/pwa/out/ops/seats/index.html +1 -1
- package/apps/pwa/out/ops/seats/index.txt +22 -22
- package/apps/pwa/out/outputs/index.html +1 -0
- package/apps/pwa/out/outputs/index.txt +30 -0
- package/apps/pwa/out/reflection/index.html +1 -1
- package/apps/pwa/out/reflection/index.txt +23 -23
- package/apps/pwa/out/scheduler/index.html +1 -1
- package/apps/pwa/out/scheduler/index.txt +23 -23
- package/apps/pwa/out/sessions/index.html +1 -1
- package/apps/pwa/out/sessions/index.txt +22 -22
- package/apps/pwa/out/settings/devices/index.html +1 -1
- package/apps/pwa/out/settings/devices/index.txt +23 -23
- package/apps/pwa/out/settings/index.html +1 -1
- package/apps/pwa/out/settings/index.txt +23 -23
- package/apps/pwa/out/setup/done/index.html +1 -1
- package/apps/pwa/out/setup/done/index.txt +23 -23
- package/apps/pwa/out/setup/index.html +1 -1
- package/apps/pwa/out/setup/index.txt +23 -23
- package/apps/pwa/out/share/index.html +1 -1
- package/apps/pwa/out/share/index.txt +23 -23
- package/apps/pwa/out/showroom/index.html +1 -1
- package/apps/pwa/out/showroom/index.txt +22 -22
- package/apps/pwa/out/tasks/index.html +1 -1
- package/apps/pwa/out/tasks/index.txt +23 -23
- package/apps/pwa/out/term/index.html +1 -1
- package/apps/pwa/out/term/index.txt +23 -24
- package/apps/pwa/out/today/index.html +1 -1
- package/apps/pwa/out/today/index.txt +23 -23
- package/apps/pwa/out/trace/index.html +1 -1
- package/apps/pwa/out/trace/index.txt +23 -23
- package/apps/pwa/out/vault/index.html +1 -1
- package/apps/pwa/out/vault/index.txt +23 -23
- package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
- package/apps/pwa/out/workflows/chat-ui/index.txt +23 -23
- package/apps/pwa/out/workflows/index.html +1 -1
- package/apps/pwa/out/workflows/index.txt +23 -23
- package/apps/pwa/out/workspace/index.html +1 -1
- package/apps/pwa/out/workspace/index.txt +23 -24
- package/apps/pwa/out/worktrees/index.html +1 -1
- package/apps/pwa/out/worktrees/index.txt +23 -23
- package/graphs/context/nightly-condense.yaml +21 -0
- package/graphs/context/recipes.yaml +12 -0
- package/graphs/demo/inside-seed.yaml +20 -0
- package/graphs/demo/recipes.yaml +12 -0
- package/graphs/drafts/draft-cleanup.yaml +19 -0
- package/graphs/drafts/recipes.yaml +23 -0
- package/graphs/intake/intake-daily.yaml +2 -1
- package/graphs/ops/recipes.yaml +3 -0
- package/graphs/ops/secret-exposure.yaml +24 -0
- package/graphs/release/recipes.yaml +3 -0
- package/graphs/release/release-loop.yaml +4 -1
- package/graphs/video/explainer-line.yaml +2 -2
- package/package.json +2 -1
- package/plugins/card-followup/examples/sample-card.png +0 -0
- package/plugins/elanous-hwp/README.md +25 -0
- package/plugins/elanous-hwp/cli.ts +22 -0
- package/plugins/elanous-hwp/converter.ts +237 -0
- package/plugins/elanous-hwp/fixtures/fixed-controls.hwpx +0 -0
- package/plugins/elanous-hwp/fixtures/fixed-table-controls.hwpx +0 -0
- package/plugins/elanous-hwp/fixtures/fixed.hwpx +0 -0
- package/plugins/elanous-hwp/plugin.json +16 -0
- package/plugins/elanous-hwp/plugin.ts +40 -0
- package/scripts/ci-public-export-leak-gate.ts +75 -14
- package/scripts/ci-public-leak-gate.ts +44 -9
- package/scripts/context-hooks/claude-stop.sh +4 -0
- package/scripts/context-hooks/emit.ts +24 -0
- package/scripts/context-hooks/post-tool-use.sh +4 -0
- package/scripts/coord-channel-watch.sh +12 -0
- package/scripts/coord-requests-bridge.ts +143 -0
- package/scripts/field-feed/lib.ts +4 -0
- package/scripts/fleet/node-setup.sh +20 -3
- package/scripts/homebrew-formula-bump.ts +69 -0
- package/scripts/lib/telegram-inject-args.ts +31 -0
- package/scripts/marketing/measure-site-numbers.ts +169 -0
- package/scripts/measure-gate-shards.ts +309 -0
- package/scripts/measure-pod-memory-by-goal.ts +130 -0
- package/scripts/mission-request-judge.ts +31 -1
- package/scripts/morning-report.ts +2 -2
- package/scripts/opportunity-scan.ts +1 -1
- package/scripts/release-loop/auto-approve-node.ts +21 -4
- package/scripts/release-loop/checklist-gate-node.ts +2 -1
- package/scripts/release-loop/cut-branch.ts +84 -0
- package/scripts/release-loop/gate-node.ts +22 -15
- package/scripts/release-loop/mac-smoke-node.ts +229 -0
- package/scripts/release-loop/node-verdict.ts +3 -3
- package/scripts/release-loop/ops-upgrade-node.ts +47 -6
- package/scripts/release-loop/publish-node.ts +4 -1
- package/scripts/release-loop/tui-node-checks.ts +42 -0
- package/scripts/release-loop/tui-sim-node.ts +32 -8
- package/scripts/release-loop/unattended-release.ts +5 -3
- package/scripts/release-loop/version-node.ts +74 -13
- package/scripts/signal-digest-cycle.ts +2 -7
- package/scripts/signal-digest-photo.ts +11 -0
- package/scripts/tech1-public-measure.ts +94 -0
- package/scripts/telegram-inject.ts +14 -6
- package/scripts/test-diet/node.ts +1 -1
- package/scripts/test-diet/remeasure-list.ts +112 -0
- package/scripts/tui-regress.ts +2 -2
- package/scripts/ux/demo-rehearsal.ts +247 -0
- package/scripts/ux/demo-seed.ts +108 -0
- package/scripts/ux/lib/rehearsal-verdict.ts +80 -0
- package/skills/diagram-master/SKILL.md +366 -0
- package/skills/diagram-master/references/engines/excalidraw/color-palette.md +67 -0
- package/skills/diagram-master/references/engines/excalidraw/element-templates.md +182 -0
- package/skills/diagram-master/references/engines/excalidraw/json-schema.md +71 -0
- package/skills/diagram-master/references/engines/excalidraw/render_excalidraw.py +189 -0
- package/skills/diagram-master/references/engines/excalidraw/render_template.html +57 -0
- package/skills/diagram-master/references/engines/matplotlib/matplotlib-patterns.md +235 -0
- package/skills/diagram-master/references/engines/matplotlib/render_matplotlib.py +184 -0
- package/skills/diagram-master/references/engines/mermaid/domain-templates.md +435 -0
- package/skills/diagram-master/references/engines/mermaid/render_mermaid.py +116 -0
- package/skills/diagram-master/references/engines/mermaid/syntax-reference.md +2247 -0
- package/skills/diagram-master/references/engines/nanobannana/render_nanobannana2.py +168 -0
- package/skills/diagram-master/references/engines/svg/color-palette.md +188 -0
- package/skills/diagram-master/references/engines/svg/html-base-template.html +332 -0
- package/skills/diagram-master/references/engines/svg/interactivity-patterns.md +435 -0
- package/skills/diagram-master/references/engines/svg/render_interactive_svg.py +212 -0
- package/skills/diagram-master/references/engines/svg/svg-element-templates.md +349 -0
- package/skills/diagram-master/references/examples/README.md +69 -0
- package/skills/diagram-master/references/examples/ref_grid_architecture.png +0 -0
- package/skills/diagram-master/references/examples/ref_layered_flow.png +0 -0
- package/skills/diagram-master/references/pyproject.toml +16 -0
- package/skills/diagram-master/references/quality-checklist.md +33 -0
- package/skills/diagram-master/references/routing-guide.md +164 -0
- package/skills/diagram-master/references/uv.lock +1356 -0
- package/skills/google-workspace/SKILL.md +33 -0
- package/skills/google-workspace/scripts/gws-safe.sh +177 -0
- package/skills/grill-me/SKILL.md +1 -1
- package/skills/lecture-note-digitizer/SKILL.md +926 -0
- package/skills/lecture-note-digitizer/references/convert_to_pdf.py +30 -0
- package/skills/lecture-note-digitizer/references/extract_slide_diagram.py +73 -0
- package/skills/lecture-note-digitizer/references/html-template.md +167 -0
- package/skills/lecture-note-digitizer/references/katex-style-guide.md +165 -0
- package/skills/omni-crawl/SKILL.md +21 -11
- package/skills/omni-crawl/scripts/main.ts +6 -6
- package/skills/omni-crawl/src/router.ts +3 -3
- package/skills/omni-digest/SKILL.md +17 -9
- package/skills/omni-digest/digest.md +2 -2
- package/skills/omni-digest/src/fetch.ts +30 -3
- package/skills/pitch-deck/SKILL.md +2 -2
- package/skills/pitch-deck/template.html +2 -2
- package/skills/youtube-master/SKILL.md +163 -0
- package/skills/youtube-master/package-lock.json +558 -0
- package/skills/youtube-master/package.json +13 -0
- package/skills/youtube-master/references/study-note-template.md +124 -0
- package/skills/youtube-master/scripts/main.ts +435 -0
- package/skills/youtube-master/scripts/transcribe-local.ts +24 -0
- package/skills/youtube-master/src/audio.ts +63 -0
- package/skills/youtube-master/src/domain-staging.ts +50 -0
- package/skills/youtube-master/src/env.ts +36 -0
- package/skills/youtube-master/src/obsidian.ts +155 -0
- package/skills/youtube-master/src/router.ts +110 -0
- package/skills/youtube-master/src/stt.ts +199 -0
- package/skills/youtube-master/src/study-note.ts +175 -0
- package/skills/youtube-master/src/summarize.ts +358 -0
- package/skills/youtube-master/src/transcript.ts +76 -0
- package/skills/youtube-master/src/types.ts +91 -0
- package/skills/youtube-master/src/util.ts +93 -0
- package/skills/youtube-master/src/youtube.ts +70 -0
- package/skills/youtube-master/tsconfig.json +13 -0
- package/src/acp/server.ts +5 -2
- package/src/agent-mission/driver.ts +215 -23
- package/src/agent-mission/pty-decision.ts +71 -0
- package/src/agent-mission/review-loop.ts +30 -0
- package/src/autopilot/build/llm-conflict-merge.ts +16 -3
- package/src/autopilot/pty-control-loop.ts +4 -1
- package/src/autopilot/tool-registry.ts +2 -0
- package/src/boot/daemon-prompt-turn.ts +5 -0
- package/src/boot/daemon-runtime.ts +9 -3
- package/src/boot/daemon-tools/web-search.ts +3 -0
- package/src/card-followup/core.ts +109 -0
- package/src/chat/index.ts +2 -0
- package/src/cli/drive-input-jail.ts +101 -0
- package/src/cli/hooks-cli.ts +17 -3
- package/src/cli/make-cli.ts +43 -0
- package/src/cli/persona-cli.ts +98 -9
- package/src/cli/plugin-cli.ts +31 -22
- package/src/cli/pod-cli.ts +36 -9
- package/src/cli/pod-memory-advice.ts +35 -0
- package/src/cli/pr-cli.ts +51 -15
- package/src/cli/pty-drive-cli.ts +41 -7
- package/src/cli/pty-drive-verdict.ts +40 -0
- package/src/cli/release-cli.ts +63 -10
- package/src/cli/setup-cli.ts +43 -1
- package/src/cli/skills-cli.ts +17 -1
- package/src/context-bus/claude-hooks-install.ts +10 -0
- package/src/context-bus/context-now-surfaces.ts +65 -0
- package/src/context-bus/context-now.ts +104 -0
- package/src/context-bus/coord-events.ts +2 -2
- package/src/context-bus/external-events.ts +52 -0
- package/src/context-bus/long-term-memory.ts +108 -0
- package/src/context-bus/nightly-condense.ts +153 -0
- package/src/context-bus/session-events.ts +35 -0
- package/src/dashboard/dashboard-status-lines.ts +2 -0
- package/src/dashboard/index.ts +17 -4
- package/src/dashboard/slash-runtime/dashboard-handlers.ts +31 -1
- package/src/decisions/decision-cards.ts +10 -3
- package/src/decisions/decision-ledger.ts +13 -5
- package/src/discord/sprint21-runtime.ts +5 -1
- package/src/discord-self-message.ts +32 -0
- package/src/discord-slash-wire.ts +5 -1
- package/src/discord.ts +17 -1
- package/src/domains/core-tools.ts +3 -2
- package/src/domains/outbound-alert.ts +105 -32
- package/src/domains/outbound-log-probe.ts +8 -0
- package/src/domains/telegram-kind-route.ts +51 -13
- package/src/exec-requests/default-outputs.ts +25 -0
- package/src/exec-requests/planner.ts +10 -2
- package/src/exec-requests/runner.ts +20 -6
- package/src/exec-requests/store.ts +3 -0
- package/src/execution-loop/launch-gate.ts +109 -0
- package/src/field/field-reel.ts +5 -1
- package/src/field-note/index.ts +201 -0
- package/src/field-note/telegram.ts +142 -0
- package/src/field-note/transcribe.ts +248 -0
- package/src/graph-kinds/registry.ts +3 -3
- package/src/graph-runner/graph-cli.ts +61 -1
- package/src/graph-runner/graph-grow-llm.ts +47 -0
- package/src/graph-runner/graph-grow.ts +50 -0
- package/src/graph-runner/runner.ts +329 -33
- package/src/grok/agent-search.ts +8 -2
- package/src/guardian/secret-exposure-scan.ts +101 -0
- package/src/harness/harness-cli-command.ts +375 -13
- package/src/harness/harness-pod-dispatch.ts +43 -23
- package/src/harness/harness-seams.ts +38 -4
- package/src/harness/harness-stop.ts +23 -4
- package/src/harness/launch-registry.ts +91 -0
- package/src/harness/process-garbage.ts +5 -3
- package/src/hooks/consult-intake.ts +153 -0
- package/src/hooks/dispatch.ts +82 -0
- package/src/hooks/expose.ts +254 -0
- package/src/hooks/github-shadow.ts +108 -0
- package/src/hooks/providers.ts +71 -5
- package/src/hooks/queue.ts +1 -1
- package/src/hooks/receiver.ts +94 -16
- package/src/index.ts +76 -14
- package/src/intake-plane/categorize.ts +18 -46
- package/src/intake-plane/discord-seat-work.ts +38 -2
- package/src/intake-plane/front-route-classifier.ts +33 -39
- package/src/intake-plane/persona-answer.ts +30 -0
- package/src/intake-plane/runtime-callables.ts +8 -1
- package/src/intake-plane/telegram-seat-work.ts +36 -2
- package/src/intake-plane/wish-card.ts +33 -0
- package/src/intake-plane/wish-folder.ts +67 -0
- package/src/intent-gate/gate.ts +30 -10
- package/src/live/detail-switch.ts +5 -0
- package/src/llm/difficulty.ts +57 -0
- package/src/llm/judge-layer.ts +101 -0
- package/src/llm/mission-router.ts +33 -19
- package/src/loops/contract/examples/cmo-seat.loop.yaml +51 -0
- package/src/loops/contract/examples/orchestrator.loop.yaml +57 -0
- package/src/loops/contract/examples/steward.loop.yaml +50 -0
- package/src/loops/contract/loop-agent.schema.json +138 -0
- package/src/loops/contract/validate.ts +64 -0
- package/src/loops/registry.ts +20 -6
- package/src/market/signed-index.ts +4 -0
- package/src/maturity/bot-command-maturity.ts +45 -0
- package/src/maturity/feature-maturity.ts +27 -4
- package/src/model-tier/index.ts +2 -2
- package/src/model-tier/tier-resolver.ts +20 -20
- package/src/model-tier/types.ts +6 -6
- package/src/mss/logging/log-store.ts +15 -0
- package/src/nexus/api/config-model-tier.ts +5 -4
- package/src/nexus/api/fabric-plans.ts +53 -0
- package/src/nexus/api/harness-api.ts +5 -1
- package/src/nexus/api/health.ts +2 -0
- package/src/nexus/api/http-server.ts +67 -8
- package/src/nexus/api/inside-events.ts +226 -0
- package/src/nexus/api/meta-api.ts +21 -8
- package/src/nexus/api/missions.ts +6 -1
- package/src/nexus/api/ops-seats.ts +33 -0
- package/src/nexus/api/outbound-report.ts +40 -7
- package/src/nexus/api/outputs-route.ts +44 -0
- package/src/nexus/api/personas.ts +95 -53
- package/src/nexus/api/seat-requests.ts +44 -2
- package/src/nexus/api/sessions-store.ts +17 -38
- package/src/nexus/api/sub-seat-charters.ts +34 -0
- package/src/nexus/api/tabs-mutations.ts +3 -1
- package/src/nexus/api/task-cards-api.ts +19 -0
- package/src/nexus/api/trace.ts +18 -6
- package/src/nexus/api/workflow-history.ts +88 -0
- package/src/nexus/api/workflow-run-event-bridge.ts +1 -0
- package/src/nexus/api/workflows.ts +132 -6
- package/src/nexus/index.ts +2 -0
- package/src/nexus/kinds/webterm.ts +2 -1
- package/src/nexus/outbound/delivery-ledger.ts +17 -8
- package/src/nexus/outbound/router.ts +8 -3
- package/src/nexus/webterm/pty.ts +6 -2
- package/src/onboarding/cli-auth-status.ts +80 -0
- package/src/onboarding/voice-ai.ts +3 -3
- package/src/org/seat-budget.ts +48 -0
- package/src/org/stall-escalation.ts +63 -0
- package/src/outputs/ledger.ts +120 -0
- package/src/persona/persona-todo.ts +79 -0
- package/src/persona/presets.ts +123 -2
- package/src/persona/team-set.ts +155 -0
- package/src/plugins/install/plugin-install.ts +14 -0
- package/src/plugins/maker/market-bundle.ts +110 -0
- package/src/plugins/maker/plugin-maker.ts +254 -11
- package/src/plugins/maker/wizard-generate.ts +103 -0
- package/src/pod-lease/admission.ts +150 -0
- package/src/pod-lease/dependency-state.ts +85 -0
- package/src/pod-lease/host-lease.ts +127 -0
- package/src/project/project-suggestion.ts +16 -0
- package/src/project/session-context.ts +24 -0
- package/src/release-loop/checklist.ts +17 -5
- package/src/release-loop/feature-store.ts +29 -13
- package/src/release-loop/landed-but-yellow.ts +48 -0
- package/src/release-loop/next-md-merge.ts +58 -0
- package/src/release-loop/release-note.ts +59 -4
- package/src/seat-dispatch/seat-ask.ts +130 -0
- package/src/seat-dispatch/seat-questions.ts +100 -0
- package/src/seat-loop/seat-loop.ts +709 -29
- package/src/seat-loop/seat-report.ts +37 -2
- package/src/self-dev/dev-cli.ts +4 -1
- package/src/self-dev/dev-pipeline.ts +37 -1
- package/src/self-dev/draft-sweep.ts +79 -40
- package/src/self-dev/draft-triage-rules.ts +62 -7
- package/src/self-dev/fabric-plan-core.ts +297 -0
- package/src/self-dev/orchestrate.ts +36 -4
- package/src/self-dev/release-path-guard.ts +62 -0
- package/src/self-dev/shard-aggregate.ts +230 -0
- package/src/self-dev/shard-placement.ts +60 -0
- package/src/self-dev/shard-plan.ts +48 -0
- package/src/self-dev/shard-pod-run.ts +77 -0
- package/src/self-dev/shard-run.ts +105 -0
- package/src/self-implement/budget-gate.ts +29 -12
- package/src/self-implement/gate-baseline.ts +1 -1
- package/src/self-implement/gate-candidate-ranking.ts +60 -0
- package/src/self-implement/gate-cli.ts +40 -1
- package/src/self-implement/gate-scope.ts +44 -13
- package/src/self-implement/graph-variant.ts +171 -0
- package/src/self-implement/harness-policy-gates.ts +1 -1
- package/src/self-implement/headless-elanous-driver.ts +27 -3
- package/src/self-implement/host-regate.ts +22 -1
- package/src/self-implement/importer-test-index.ts +2 -1
- package/src/self-implement/l8-merge-queue.ts +130 -0
- package/src/self-implement/orchestrator.ts +257 -9
- package/src/self-implement/route-consumer-test-index.ts +122 -0
- package/src/self-implement/seams.ts +72 -11
- package/src/self-implement/test-seams.ts +2 -0
- package/src/self-implement/uncommitted-work.ts +59 -0
- package/src/session/index.ts +36 -13
- package/src/skills/gift-install.ts +215 -0
- package/src/skills/tools/web-search.ts +4 -1
- package/src/steward/launch.ts +42 -26
- package/src/steward/steward-cards.ts +17 -9
- package/src/steward/triage.ts +46 -14
- package/src/task-cards/card-cli.ts +25 -1
- package/src/task-orchestrator/mission.ts +5 -0
- package/src/task-orchestrator/store.ts +12 -3
- package/src/task-orchestrator/surfaces/pod-command-job.ts +43 -17
- package/src/task-orchestrator/surfaces/pod-lease.ts +156 -19
- package/src/task-orchestrator/surfaces/pod-pool.ts +127 -26
- package/src/task-orchestrator/surfaces/self-implement-pod.ts +222 -40
- package/src/task-orchestrator/surfaces/self-implement.ts +15 -2
- package/src/task-orchestrator/types.ts +2 -0
- package/src/telegram-card-followup.ts +16 -96
- package/src/telegram-commands.ts +31 -1
- package/src/telegram-project-command.ts +145 -0
- package/src/telegram-report.ts +21 -17
- package/src/telegram.ts +61 -8
- package/src/tool-runtime/self-cognition-runtimes.ts +13 -3
- package/src/user-config.ts +110 -24
- package/src/version/packed-revision.json +1 -1
- package/src/web-search/grok.ts +7 -1
- package/src/web-search/index.ts +28 -1
- package/src/web-search/provider.ts +4 -0
- package/src/web-search/x-intent.ts +5 -0
- package/src/workflow-runtime/executor.ts +277 -47
- package/src/workflow-runtime/index.ts +1 -0
- package/src/workflow-runtime/nodes/subworkflow.ts +60 -0
- package/src/workflow-runtime/plugin-kind-node.ts +1 -1
- package/src/workflow-runtime/schema.ts +79 -4
- package/src/workflow-runtime/types.ts +35 -4
- package/apps/pwa/out/_next/static/2DsiDfDCks44g1cPUMhiW/_buildManifest.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2375-cb6debea56cce4fb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/24-e6d28380efab7faf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +0 -25
- package/apps/pwa/out/_next/static/chunks/3403.4bc97b4066945a94.js +0 -5
- package/apps/pwa/out/_next/static/chunks/3615-740dd270764ffa24.js +0 -1
- package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3734-1015fe991eb9b7e7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5012-a7fe6f3c8b6fe45a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5783-ef40ebfc91d55230.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5791-bb82743fa6299562.js +0 -1
- package/apps/pwa/out/_next/static/chunks/62-ff227c3edb8b248b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7633-1b3709b0854c9412.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7951-8b03dbb10b24cd06.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8142-744998d65d7bb17e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8195-6fde3d7a39859206.js +0 -10
- package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8894-b5fb36bab837cd29.js +0 -1
- package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9454-84d0d5d77446bd92.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9651-3cd291a6fa1370d2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/988-5f92e7ab7ccea3dd.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9989-5582582f06429840.js +0 -1
- package/apps/pwa/out/_next/static/chunks/ae787e4c-f2998de7f1ba72a4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-d2253d7e58ef1890.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-5441d4a9ab35e518.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/board/page-d9b12d680922d980.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-e268d6d145827a22.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/chat/page-f8116559c7424da7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/consult/page-1085399fd0f32112.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/control/page-1df686a14f65895a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-54e1f966ab60a4dc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/editor/page-7ed95f296f5ee8e9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/exec/page-11edac668d77e5c3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/field/page-59e2b9a22cd5a6d5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/intake/page-2976df21ad74ab48.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/layout-34d211a67f16d510.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live/page-8ff652d5d950639b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/market/page-b31610deda76337b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-6cb0e1bbefe5fb3d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/morning/page-a286a152cf584576.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/not-found-d9237581e7003bcb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-83274e761643fdd2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-ceee6cfb1d4e6d68.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-9c9f8bb3e4a64091.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-c17217603ea3426a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/page-efb6177cbf1e8a51.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-d307523703bc4df3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-462f4e4bab45ce7d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-8990e96f33af3837.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-e168fa1030af0548.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-1233e05a4068bc9c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-13a1840b1fac337a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/page-64a29fc80b11ab55.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/share/page-68e787339a16b3dc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-4fddc90b23feb215.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-886ba8260dc79c79.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/term/page-0f26507a1722e40b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/today/page-109d4ccd42259c9d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/trace/page-f5c2a4e510726774.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/vault/page-b2e0039416f42522.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-26102fd7350f171e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-708948bc8a802794.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-5e5611620f78fb0b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-139ba5c367bbf60a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-app-202b4e81f33895ea.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +0 -1
- package/apps/pwa/out/_next/static/chunks/webpack-e5bea36f183b25e6.js +0 -1
- package/apps/pwa/out/_next/static/css/43feca5fd387dcbd.css +0 -1
- /package/apps/pwa/out/_next/static/{2DsiDfDCks44g1cPUMhiW → -6XrAoD3eU7NyMHAE4xPS}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: google-workspace
|
|
3
|
+
description: Use your own Google account to find, summarize and draft Gmail messages; read or create Calendar events; read Drive and Sheets.
|
|
4
|
+
requires: []
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Google Workspace
|
|
8
|
+
|
|
9
|
+
## Set up
|
|
10
|
+
|
|
11
|
+
Install the `gws` CLI and run `gws auth login` with **your own Google account**. Grant the scopes required for the requested operation in your account. Do not request or expose credentials in chat.
|
|
12
|
+
|
|
13
|
+
Run commands from this skill directory so the bundled wrapper resolves by relative path:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
bash scripts/gws-safe.sh gmail users messages list --params '{"userId":"me","q":"is:unread","maxResults":10}'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Use `scripts/gws-safe.sh` for API calls, not `gws` directly. The wrapper removes proxy variables, strips the keyring banner before JSON output, and checks the API method against `gws schema` before running it. A read with an unknown method is blocked too; do not bypass the check. `gws schema <service.resource.method>` can be used to inspect the method locally.
|
|
20
|
+
|
|
21
|
+
## Supported work
|
|
22
|
+
|
|
23
|
+
- Gmail: find messages, read and summarize their contents, compose a draft in the reply, or save an approved draft in Gmail. Saving a draft is a write and requires the write gate below.
|
|
24
|
+
- Calendar: look up events and create events after confirming their details with the user.
|
|
25
|
+
- Drive and Sheets: read files and spreadsheet data. Do not edit them without an explicit request.
|
|
26
|
+
|
|
27
|
+
For example, read Calendar events with `bash scripts/gws-safe.sh calendar events list --params '{"calendarId":"primary"}'`. Check the relevant API schema and required parameters before issuing other calls. Treat API errors as errors, not as empty results.
|
|
28
|
+
|
|
29
|
+
## Write gate and user confirmation
|
|
30
|
+
|
|
31
|
+
Before sending email, deleting anything, or performing another irreversible action, ask the user for explicit confirmation of the **specific action and its targets**. Creating Calendar events and saving Gmail drafts also writes to the account: confirm the details before doing either. The wrapper rejects POST, PUT, PATCH, DELETE and unknown methods with exit code 4 by default; it is not permission to silently enable writes.
|
|
32
|
+
|
|
33
|
+
For each write, first inspect `gws schema <service.resource.method>` and prepare the exact wrapper command, including recipient or calendar, content, and parameters. Show those details to the user and wait for their explicit approval of **that command**. Only after that approval, run the same command yourself from this skill directory with the one-command prefix `ELANOUS_GWS_ALLOW_WRITE=1 bash scripts/gws-safe.sh ...`. Check the JSON response for errors and report the result; do not reuse approval for another command, silently change its arguments, leave the variable enabled for later calls, or bypass the wrapper. If the user does not approve, do not execute the write.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# 🔐 **`gws` 를 «안전하게» 부르는 한 자리** — ⛔ 이 셸의 함정 둘을 여기서 «한 번만» 막는다.
|
|
3
|
+
#
|
|
4
|
+
# bash scripts/google/gws-safe.sh gmail users messages list --params '{"userId":"me"}'
|
|
5
|
+
#
|
|
6
|
+
# ⛔⭐ **함정 ①: 프록시** — 이 셸엔 HTTPS_PROXY 가 걸려 있고 `gws` 가 그것을 통과 못 한다
|
|
7
|
+
# (문면: "tunnel error: unsuccessful"). ⇒ 프록시를 «빼고» 부른다.
|
|
8
|
+
# 🚨 이 한 줄이 없으면 범위가 멀쩡해도 ***401 로 「인증 실패」처럼 보인다*** — 2026-08-26 에 그렇게 오진할 뻔했다.
|
|
9
|
+
#
|
|
10
|
+
# ⛔⭐ **함정 ②: 머리말** — `gws` 는 "Using keyring backend …" 를 stdout 에 «섞는다».
|
|
11
|
+
# 그대로 파서에 주면 JSON 파싱이 죽고, ***그 죽음이 「API 실패」처럼 보인다***(32차에 실제로 그랬다).
|
|
12
|
+
# ⇒ 첫 `{` 또는 `[` «부터» 잘라 낸다. `grep -v` 로 한 줄만 거르는 것으로는 부족했다.
|
|
13
|
+
#
|
|
14
|
+
# 📌 **왜 이 파일이 «따로» 있나**: 이 지식이 `scripts/botlab/assistant-google.sh` «안»에만 있었다.
|
|
15
|
+
# Google 을 쓰는 두 번째 소비자(스킬)를 만들면서 ***복제하지 않으려고*** 뽑았다.
|
|
16
|
+
# ⛔ 새 소비자는 이 파일을 «부른다» — gws 를 직접 부르지 마라.
|
|
17
|
+
set -uo pipefail
|
|
18
|
+
|
|
19
|
+
if [ "$#" -eq 0 ]; then
|
|
20
|
+
echo "⛔ 인자가 «없다» — gws 에 넘길 명령을 그대로 준다." >&2
|
|
21
|
+
echo " 예: bash scripts/google/gws-safe.sh gmail users messages list --params '{\"userId\":\"me\"}'" >&2
|
|
22
|
+
exit 2
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
# ⛔⭐⭐ **크론의 `PATH` 에는 `gws` 도 `node` 도 «없다»** — 이 저장소가 «여섯 번째» 밟은 자리다.
|
|
26
|
+
# 🚨 2026-08-29 실측: 아침 07:30 회차가 `gws 를 못 찾았다` ×3 으로 죽었다. 손으로 돌리면 «된다».
|
|
27
|
+
# ⛔⛔ 그리고 ***절대 경로만으로는 부족하다*** — `gws` 의 shebang 이 `#!/usr/bin/env node` 라
|
|
28
|
+
# node 가 PATH 에 없으면 ***rc=127***이다(매뉴얼의 ④ 「있는데도 안 된다」 층).
|
|
29
|
+
# 📏 반증: `env -i PATH=/usr/bin:/bin <절대경로>/gws --help` ⇒ rc=127 ·
|
|
30
|
+
# 그 디렉터리를 PATH 에 넣으면 ⇒ rc=0.
|
|
31
|
+
# ⇒ 그래서 ⓐ 실물로 «찾고» ⓑ ***찾은 것의 디렉터리를 PATH 에 넣는다***(node 가 그 옆에 산다).
|
|
32
|
+
resolve_gws_bin() {
|
|
33
|
+
local candidate
|
|
34
|
+
# ⛔⭐ **명시값은 «그것만» 쓴다** — 「이것을 써라」이지 「여기부터 찾아라」가 아니다.
|
|
35
|
+
# 🚨 첫 판은 명시값이 없을 때 자동 탐색으로 «흘러내려» 갔고, 그 바람에
|
|
36
|
+
# ***「gws 가 없다」는 상황을 시험이 만들 수 없었다***(시험이 즉시 잡았다).
|
|
37
|
+
if [ -n "${ELANOUS_GWS_BIN:-}" ]; then
|
|
38
|
+
if [ -x "$ELANOUS_GWS_BIN" ]; then printf '%s\n' "$ELANOUS_GWS_BIN"; return 0; fi
|
|
39
|
+
if command -v "$ELANOUS_GWS_BIN" >/dev/null 2>&1; then command -v "$ELANOUS_GWS_BIN"; return 0; fi
|
|
40
|
+
return 0 # ⛔ 명시했는데 없으면 «없는 것»이다 — 다른 데서 찾지 않는다
|
|
41
|
+
fi
|
|
42
|
+
if command -v gws >/dev/null 2>&1; then command -v gws; return 0; fi
|
|
43
|
+
# ⛔ nvm 은 «버전 디렉터리»가 바뀐다 — 경로를 박지 않고 훑는다(사전순 마지막 = 대개 최신).
|
|
44
|
+
for candidate in "$HOME"/.nvm/versions/node/*/bin/gws /opt/homebrew/bin/gws /usr/local/bin/gws; do
|
|
45
|
+
[ -x "$candidate" ] && printf '%s\n' "$candidate"
|
|
46
|
+
done | tail -1
|
|
47
|
+
}
|
|
48
|
+
GWS_BIN="$(resolve_gws_bin)"
|
|
49
|
+
if [ -z "$GWS_BIN" ]; then
|
|
50
|
+
echo "⛔ gws 를 «못 찾았다»(${ELANOUS_GWS_BIN:-gws}) — 「Google 이 안 된다」가 아니라 ***이 기계에 그 CLI 가 없다***." >&2
|
|
51
|
+
echo " 본 곳: \$ELANOUS_GWS_BIN · PATH · ~/.nvm/versions/node/*/bin · /opt/homebrew/bin · /usr/local/bin" >&2
|
|
52
|
+
exit 3
|
|
53
|
+
fi
|
|
54
|
+
# ⛔ 「찾았다」로 끝내지 않는다 — 그 옆의 node 를 쓸 수 있게 «뒤»에 붙인다.
|
|
55
|
+
# ⚠️ «뒤»인 이유: 부르는 쪽이 준 PATH(시험의 가짜들)를 밀지 않기 위해서다.
|
|
56
|
+
GWS_DIR="$(cd "$(dirname "$GWS_BIN")" 2>/dev/null && pwd)" || GWS_DIR=""
|
|
57
|
+
[ -n "$GWS_DIR" ] && export PATH="$PATH:$GWS_DIR"
|
|
58
|
+
|
|
59
|
+
# ⛔⭐⭐⭐ **열쇠고리(Keychain)를 «쓰는» 순간 크론이 죽는다 — 그래서 저장소를 «파일»로 못 박는다.**
|
|
60
|
+
# 🚨 2026-08-29(36차) 실측 · ***크론 회차의 전체 문면이 스스로 답을 말했다***:
|
|
61
|
+
# 401 Authentication failed: Failed to get token:
|
|
62
|
+
# Error while setting token in cache: OS keyring failed:
|
|
63
|
+
# Platform secure storage failure: ***User interaction is not allowed.***
|
|
64
|
+
# ⇒ Set GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file to use file storage.
|
|
65
|
+
# ⇒ 🔑 인증은 «됐고», 갱신한 토큰을 ***Keychain 에 «쓰다가»*** 죽는다. 크론은 비대화형이라
|
|
66
|
+
# 그 쓰기에 필요한 사용자 확인을 못 받는다. ⛔ 「로그인이 안 됐다」가 아니다.
|
|
67
|
+
#
|
|
68
|
+
# ⛔⭐⭐ **그리고 이 축은 `env` 로 «재현되지 않는다»** — 36차가 실제로 속았다:
|
|
69
|
+
# `env -i PATH=/usr/bin:/bin …` 로 돌리면 ***성공한다***(같은 시각 크론은 실패).
|
|
70
|
+
# ***보안 세션은 환경변수를 따라오지 않기 때문***이다. ⇒ 「크론과 같은 PATH 로 돌려 봤다」는
|
|
71
|
+
# 크론 판정이 «아니다». 판정은 ***진짜 크론 회차***로만 한다(RFC §27c ④ 가 옳았다 · 두 번).
|
|
72
|
+
#
|
|
73
|
+
# ⚖️ **보안 결정**: 파일 저장소는 열쇠를 Keychain 대신 «파일»에 둔다. 이 기계는 이미 같은 계급의
|
|
74
|
+
# 결정을 한 번 했다(`~/.config/gws/credentials.json` 평문 · 대표 승인 2026-08-29). 그 디렉터리는
|
|
75
|
+
# `drwx------`(0700)이다. ⛔ 명시값이 있으면 «그것을» 존중한다 — 여기서 덮어쓰지 않는다.
|
|
76
|
+
export GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND="${GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND:-file}"
|
|
77
|
+
|
|
78
|
+
# ⛔ 그래도 열쇠고리 오류가 나면 «이름을 대고» 말한다 — 조용히 401 로 흘리지 않는다.
|
|
79
|
+
diagnose_keyring_401() {
|
|
80
|
+
{
|
|
81
|
+
echo "⛔⭐ 이 401 은 «로그인 실패»가 아니다 — 토큰을 ***저장소에 쓰다가*** 죽었다."
|
|
82
|
+
echo " 지금 백엔드: GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=${GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND:-(비어 있다)}"
|
|
83
|
+
echo " ⇒ 이 값이 file 이 «아니면» 누가 밖에서 덮어쓴 것이다(이 파일은 file 을 기본으로 준다)."
|
|
84
|
+
echo " ⇒ file 인데도 났다면 ~/.config/gws 의 쓰기 권한을 봐라(0700 이어야 한다)."
|
|
85
|
+
echo " ⛔ 「사람이 다시 로그인하면 된다」로 읽지 마라 — 그 로그인은 이미 돼 있다."
|
|
86
|
+
} >&2
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
# ⛔⭐⭐ **403 을 「범위 부족」으로만 읽지 않는다 — «왜» 그 자격인지가 다른 층에 있다.**
|
|
90
|
+
# 🚨 2026-08-29 실측 · 외부 문서로 확인(deepwiki googleworkspace/cli 2.2-authentication):
|
|
91
|
+
# gws 의 자격 해결 순서는 ***TOKEN/CREDENTIALS_FILE → credentials.enc → credentials.json → ADC*** 이고,
|
|
92
|
+
# 토큰 캐시는 AES-256-GCM 이며 ***그 열쇠가 OS keyring(macOS Keychain)에 산다***.
|
|
93
|
+
# ⇒ 그래서 Keychain 을 «못 읽는» 세션(크론 · 에이전트 하위 프로세스)에서는
|
|
94
|
+
# ***조용히 ADC 로 폴백***하고, ADC 는 gcloud 공용 클라이언트라 Gmail 같은 민감 범위가
|
|
95
|
+
# «이미 차단»돼 있어 ***403 insufficientPermissions*** 가 난다.
|
|
96
|
+
# 📏 이 기계에서 잰 것: `gws auth status` ⇒ `storage=none` · `keyring_backend=keyring` ·
|
|
97
|
+
# `token_cache_exists=true` ⊕ `security find-generic-password -s gws-cli -w` 가 ***프롬프트에 걸려 rc=124***.
|
|
98
|
+
# ⛔ 그러니 「사람이 로그인만 하면 된다」로 안내하면 «틀린 길»로 보낸다 — 그 로그인은 이미 돼 있었다.
|
|
99
|
+
diagnose_403() {
|
|
100
|
+
local storage
|
|
101
|
+
storage="$("$GWS_BIN" auth status 2>/dev/null \
|
|
102
|
+
| sed -n 's/.*"storage" *: *"\([^"]*\)".*/\1/p' | head -1)"
|
|
103
|
+
[ "$storage" = "none" ] || return 0
|
|
104
|
+
{
|
|
105
|
+
echo "⛔⭐ 그런데 이 403 은 «범위만»의 문제가 아닐 수 있다 — 자격 저장소를 «못 읽고» 있다:"
|
|
106
|
+
echo " gws auth status ⇒ storage=none (keyring 을 못 읽었다) ⇒ ***ADC 로 폴백***한 것이다."
|
|
107
|
+
echo " ADC 는 gcloud 공용 클라이언트라 Gmail 등 민감 범위가 «이미 차단»돼 있다."
|
|
108
|
+
echo " ⇒ 사람이 «자기 터미널»에서 한 번(크론·에이전트도 읽을 수 있게 «파일»로 내린다):"
|
|
109
|
+
echo " gws auth export --unmasked > ~/.config/gws/credentials.json && chmod 600 ~/.config/gws/credentials.json"
|
|
110
|
+
echo " ⛔ 그 파일은 «평문 자격»이다 — 두는 것 자체가 보안 결정이다(0600 필수)."
|
|
111
|
+
} >&2
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
# ── 🚧 쓰기 관문 ────────────────────────────────────────────────────────────
|
|
115
|
+
# ⛔⭐⭐ ***되돌릴 수 없는 것을 «규율»로만 막지 않는다.***
|
|
116
|
+
# `google-workspace` 스킬의 SKILL.md 가 「명시 없으면 초안까지」라고 «부탁»하지만,
|
|
117
|
+
# 그것은 프롬프트다 — ***관문이 아니다***. 메일 전송·일정 삭제는 되돌릴 길이 «없다».
|
|
118
|
+
# 📌 브라우저 축이 같은 자리에서 같은 답을 냈다(`decideReversibility` · `actionHosts`).
|
|
119
|
+
#
|
|
120
|
+
# ⭐ **이름을 짐작하지 않는다** — Google 이 «스스로» 말한다:
|
|
121
|
+
# gws schema <service.resource.method> ⇒ "httpMethod": "GET" | "POST" | "DELETE" | …
|
|
122
|
+
# 📏 실측 2026-08-28: 이 조회는 ***지역*** 이다(죽은 프록시로도 답한다) · 165~181ms.
|
|
123
|
+
#
|
|
124
|
+
# ⛔ 모르면 «막는다» — 「모른다」를 「괜찮다」로 읽지 않는다(브라우저 축의 ClickKind 와 같은 규율).
|
|
125
|
+
gws_write_gate() {
|
|
126
|
+
# gws <service> <resource> [sub-resource] <method> [flags] — 첫 «플래그» 앞까지가 위치 인자다.
|
|
127
|
+
local -a pos=()
|
|
128
|
+
local a
|
|
129
|
+
for a in "$@"; do
|
|
130
|
+
case "$a" in -*) break ;; *) pos+=("$a") ;; esac
|
|
131
|
+
done
|
|
132
|
+
# `schema` 자체는 조회다 — 그리고 위치 인자가 모자라면 gws 가 스스로 거절한다.
|
|
133
|
+
if [ "${#pos[@]}" -lt 2 ] || [ "${pos[0]}" = "schema" ] || [ "${pos[0]}" = "auth" ]; then return 0; fi
|
|
134
|
+
|
|
135
|
+
local path
|
|
136
|
+
path=$(IFS=.; echo "${pos[*]}")
|
|
137
|
+
local http
|
|
138
|
+
http=$(env -u HTTP_PROXY -u HTTPS_PROXY -u http_proxy -u https_proxy -u ALL_PROXY -u all_proxy \
|
|
139
|
+
"$GWS_BIN" schema "$path" 2>/dev/null \
|
|
140
|
+
| sed -n '/^[[{]/,$p' \
|
|
141
|
+
| python3 -c 'import sys,json
|
|
142
|
+
try: print((json.load(sys.stdin) or {}).get("httpMethod") or "")
|
|
143
|
+
except Exception: print("")' 2>/dev/null)
|
|
144
|
+
|
|
145
|
+
case "$http" in
|
|
146
|
+
GET|HEAD) return 0 ;;
|
|
147
|
+
"")
|
|
148
|
+
echo "⛔ 이 호출이 «읽기인지 쓰기인지» 못 알아냈다(schema $path 가 httpMethod 를 안 냈다)." >&2
|
|
149
|
+
echo " ⇒ 「모른다」를 「괜찮다」로 읽지 않는다. 읽기라면 경로를 확인하고, 쓰기라면 아래를 보라." >&2
|
|
150
|
+
;;
|
|
151
|
+
*)
|
|
152
|
+
echo "⛔ 이것은 «쓰기»다($http $path) — ***되돌릴 길이 없다***." >&2
|
|
153
|
+
;;
|
|
154
|
+
esac
|
|
155
|
+
echo " 사람이 그 «한 번»을 명시로 열어야 한다: ELANOUS_GWS_ALLOW_WRITE=1 <같은 명령>" >&2
|
|
156
|
+
return 1
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if [ "${ELANOUS_GWS_ALLOW_WRITE:-}" != "1" ]; then
|
|
160
|
+
gws_write_gate "$@" || exit 4
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
# ⛔ 산출을 «한 번» 담는다 — 403 이면 그 «이유»를 같이 내야 하기 때문이다(diagnose_403).
|
|
164
|
+
# ⚠️ 담지 않으면 파이프 뒤에서 그 판정을 할 수 없다. gws 응답은 작아 이 비용이 싸다.
|
|
165
|
+
GWS_RAW="$(env -u HTTP_PROXY -u HTTPS_PROXY -u http_proxy -u https_proxy -u ALL_PROXY -u all_proxy \
|
|
166
|
+
"$GWS_BIN" "$@" 2>&1)"
|
|
167
|
+
GWS_RC=$?
|
|
168
|
+
printf '%s\n' "$GWS_RAW" | sed -n '/^[[{]/,$p'
|
|
169
|
+
|
|
170
|
+
# ⛔⭐ 403 을 «그냥 흘려보내지 않는다» — 자격 저장소를 못 읽어 ADC 로 폴백한 것일 수 있다.
|
|
171
|
+
# 📌 그 갈림이 없으면 「사람이 로그인만 하면 된다」는 «틀린 길»로 안내하게 된다.
|
|
172
|
+
case "$GWS_RAW" in *'"code": 403'*|*'"code":403'*) diagnose_403 ;; esac
|
|
173
|
+
|
|
174
|
+
# ⛔⭐ 401 + 열쇠고리 문면이면 «다른 병»이다 — 403(범위·ADC 폴백)과 갈라서 말한다.
|
|
175
|
+
case "$GWS_RAW" in *'OS keyring failed'*|*'secure storage failure'*) diagnose_keyring_401 ;; esac
|
|
176
|
+
|
|
177
|
+
exit "$GWS_RC"
|
package/skills/grill-me/SKILL.md
CHANGED
|
@@ -128,7 +128,7 @@ requires: []
|
|
|
128
128
|
| 🧑🤝🧑 **팀 짜기** | 일이 여럿으로 갈릴 때 | ⭐ 목표를 심은 뒤 *"이 일을 할 팀을 짜 보라"* — 인터뷰의 «응용»이다 |
|
|
129
129
|
|
|
130
130
|
⛔ **골 문면으로 갈 때는 파서가 무는 문면을 «그때» 확인한다** —
|
|
131
|
-
|
|
131
|
+
골 저작 방법 매뉴얼 §1a. ⛔ 여기 옮겨 적지 않는다(늙는다).
|
|
132
132
|
|
|
133
133
|
---
|
|
134
134
|
|