@withbuddi/buddi 0.1.0-pre.44 → 0.1.0-pre.45
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/extension/manifest.json +2 -2
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/tools.d.ts +6 -1
- package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/tools.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/agents/agent-intro.d.ts +31 -0
- package/node_modules/@buddi/gateway/dist/agents/agent-intro.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/agents/agent-intro.js +116 -0
- package/node_modules/@buddi/gateway/dist/agents/agent-intro.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts +10 -0
- package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/delegation.js +18 -1
- package/node_modules/@buddi/gateway/dist/agents/delegation.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform.d.ts +14 -1
- package/node_modules/@buddi/gateway/dist/agents/platform.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform.js +44 -11
- package/node_modules/@buddi/gateway/dist/agents/platform.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/bootstrap.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/bootstrap.js +2 -0
- package/node_modules/@buddi/gateway/dist/bootstrap.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/edition-origin.d.ts +57 -0
- package/node_modules/@buddi/gateway/dist/edition-origin.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/edition-origin.js +156 -0
- package/node_modules/@buddi/gateway/dist/edition-origin.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/system-context.d.ts +9 -0
- package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/system-context.js +28 -2
- package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts +6 -0
- package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.js +10 -2
- package/node_modules/@buddi/gateway/dist/telegram/approvals.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/main.js +10 -3
- package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts +9 -0
- package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/outbound.js +43 -0
- package/node_modules/@buddi/gateway/dist/telegram/outbound.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js +2 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/tips/engine.d.ts +32 -0
- package/node_modules/@buddi/gateway/dist/tips/engine.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/tips/engine.js +69 -0
- package/node_modules/@buddi/gateway/dist/tips/engine.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/tips/route.d.ts +1 -3
- package/node_modules/@buddi/gateway/dist/tips/route.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/tips/route.js +54 -30
- package/node_modules/@buddi/gateway/dist/tips/route.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/agent-offers.d.ts +10 -1
- package/node_modules/@buddi/gateway/dist/web/agent-offers.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/agent-offers.js +14 -1
- package/node_modules/@buddi/gateway/dist/web/agent-offers.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.js +19 -6
- package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts +16 -0
- package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/approval-ask.js +51 -0
- package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts +6 -0
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/chat.js +4 -0
- package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/live.d.ts +7 -0
- package/node_modules/@buddi/gateway/dist/web/live.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/live.js +12 -0
- package/node_modules/@buddi/gateway/dist/web/live.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +30 -5
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/codex-direct.d.ts +1 -1
- package/node_modules/@buddi/runtime/dist/codex-direct.js +1 -1
- package/node_modules/@buddi/runtime/dist/grounding.d.ts +54 -0
- package/node_modules/@buddi/runtime/dist/grounding.d.ts.map +1 -0
- package/node_modules/@buddi/runtime/dist/grounding.js +158 -0
- package/node_modules/@buddi/runtime/dist/grounding.js.map +1 -0
- package/node_modules/@buddi/runtime/dist/index.d.ts +1 -0
- package/node_modules/@buddi/runtime/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/index.js +1 -0
- package/node_modules/@buddi/runtime/dist/index.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/loop.d.ts +13 -0
- package/node_modules/@buddi/runtime/dist/loop.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/loop.js +98 -3
- package/node_modules/@buddi/runtime/dist/loop.js.map +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-email/dist/agent.d.ts +6 -1
- package/node_modules/@buddi/tool-email/dist/agent.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/agent.js +6 -1
- package/node_modules/@buddi/tool-email/dist/agent.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts +8 -0
- package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/imap/fake.js +15 -0
- package/node_modules/@buddi/tool-email/dist/imap/fake.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js +26 -17
- package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/index.d.ts +5 -1
- package/node_modules/@buddi/tool-email/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/index.js +11 -3
- package/node_modules/@buddi/tool-email/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/mail.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/mail.js +4 -1
- package/node_modules/@buddi/tool-email/dist/mail.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/index.d.ts +2 -1
- package/node_modules/@buddi/tool-email/dist/pages/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/index.js +2 -2
- package/node_modules/@buddi/tool-email/dist/pages/index.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts +3 -2
- package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/queries.js +19 -7
- package/node_modules/@buddi/tool-email/dist/pages/queries.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/ports.d.ts +15 -0
- package/node_modules/@buddi/tool-email/dist/ports.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/ports.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts +9 -1
- package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js +1 -0
- package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/text-cleanup.d.ts +69 -0
- package/node_modules/@buddi/tool-email/dist/text-cleanup.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/text-cleanup.js +96 -0
- package/node_modules/@buddi/tool-email/dist/text-cleanup.js.map +1 -0
- package/node_modules/@buddi/tool-email/dist/text.d.ts +29 -0
- package/node_modules/@buddi/tool-email/dist/text.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/text.js +153 -0
- package/node_modules/@buddi/tool-email/dist/text.js.map +1 -0
- package/node_modules/@buddi/tool-email/dist/worker.d.ts +64 -0
- package/node_modules/@buddi/tool-email/dist/worker.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/worker.js +123 -0
- package/node_modules/@buddi/tool-email/dist/worker.js.map +1 -0
- package/node_modules/@buddi/tool-email/migrations/028_reading.sql +5 -2
- package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
- package/node_modules/marked/bin/main.js +1 -1
- package/node_modules/marked/lib/marked.d.ts +7 -0
- package/node_modules/marked/lib/marked.esm.js +14 -14
- package/node_modules/marked/lib/marked.esm.js.map +3 -3
- package/node_modules/marked/lib/marked.umd.js +19 -19
- package/node_modules/marked/lib/marked.umd.js.map +3 -3
- package/node_modules/marked/man/marked.1 +1 -1
- package/node_modules/marked/package.json +1 -1
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/tools.d.ts +6 -1
- package/packages/core/dist/tools.d.ts.map +1 -1
- package/packages/core/dist/tools.js.map +1 -1
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/agents/agent-intro.d.ts +31 -0
- package/packages/gateway/dist/agents/agent-intro.d.ts.map +1 -0
- package/packages/gateway/dist/agents/agent-intro.js +116 -0
- package/packages/gateway/dist/agents/agent-intro.js.map +1 -0
- package/packages/gateway/dist/agents/delegation.d.ts +10 -0
- package/packages/gateway/dist/agents/delegation.d.ts.map +1 -1
- package/packages/gateway/dist/agents/delegation.js +18 -1
- package/packages/gateway/dist/agents/delegation.js.map +1 -1
- package/packages/gateway/dist/agents/platform.d.ts +14 -1
- package/packages/gateway/dist/agents/platform.d.ts.map +1 -1
- package/packages/gateway/dist/agents/platform.js +44 -11
- package/packages/gateway/dist/agents/platform.js.map +1 -1
- package/packages/gateway/dist/bootstrap.d.ts.map +1 -1
- package/packages/gateway/dist/bootstrap.js +2 -0
- package/packages/gateway/dist/bootstrap.js.map +1 -1
- package/packages/gateway/dist/edition-origin.d.ts +57 -0
- package/packages/gateway/dist/edition-origin.d.ts.map +1 -0
- package/packages/gateway/dist/edition-origin.js +156 -0
- package/packages/gateway/dist/edition-origin.js.map +1 -0
- package/packages/gateway/dist/system-context.d.ts +9 -0
- package/packages/gateway/dist/system-context.d.ts.map +1 -1
- package/packages/gateway/dist/system-context.js +28 -2
- package/packages/gateway/dist/system-context.js.map +1 -1
- package/packages/gateway/dist/telegram/approvals.d.ts +6 -0
- package/packages/gateway/dist/telegram/approvals.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/approvals.js +10 -2
- package/packages/gateway/dist/telegram/approvals.js.map +1 -1
- package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/main.js +10 -3
- package/packages/gateway/dist/telegram/main.js.map +1 -1
- package/packages/gateway/dist/telegram/outbound.d.ts +9 -0
- package/packages/gateway/dist/telegram/outbound.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/outbound.js +43 -0
- package/packages/gateway/dist/telegram/outbound.js.map +1 -1
- package/packages/gateway/dist/telegram/surface.d.ts +2 -0
- package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/surface.js +2 -1
- package/packages/gateway/dist/telegram/surface.js.map +1 -1
- package/packages/gateway/dist/tips/engine.d.ts +32 -0
- package/packages/gateway/dist/tips/engine.d.ts.map +1 -1
- package/packages/gateway/dist/tips/engine.js +69 -0
- package/packages/gateway/dist/tips/engine.js.map +1 -1
- package/packages/gateway/dist/tips/route.d.ts +1 -3
- package/packages/gateway/dist/tips/route.d.ts.map +1 -1
- package/packages/gateway/dist/tips/route.js +54 -30
- package/packages/gateway/dist/tips/route.js.map +1 -1
- package/packages/gateway/dist/web/agent-offers.d.ts +10 -1
- package/packages/gateway/dist/web/agent-offers.d.ts.map +1 -1
- package/packages/gateway/dist/web/agent-offers.js +14 -1
- package/packages/gateway/dist/web/agent-offers.js.map +1 -1
- package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/packages/gateway/dist/web/api-routes.js +19 -6
- package/packages/gateway/dist/web/api-routes.js.map +1 -1
- package/packages/gateway/dist/web/approval-ask.d.ts +16 -0
- package/packages/gateway/dist/web/approval-ask.d.ts.map +1 -0
- package/packages/gateway/dist/web/approval-ask.js +51 -0
- package/packages/gateway/dist/web/approval-ask.js.map +1 -0
- package/packages/gateway/dist/web/chat.d.ts +6 -0
- package/packages/gateway/dist/web/chat.d.ts.map +1 -1
- package/packages/gateway/dist/web/chat.js +4 -0
- package/packages/gateway/dist/web/chat.js.map +1 -1
- package/packages/gateway/dist/web/live.d.ts +7 -0
- package/packages/gateway/dist/web/live.d.ts.map +1 -1
- package/packages/gateway/dist/web/live.js +12 -0
- package/packages/gateway/dist/web/live.js.map +1 -1
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +30 -5
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/codex-direct.d.ts +1 -1
- package/packages/runtime/dist/codex-direct.js +1 -1
- package/packages/runtime/dist/grounding.d.ts +54 -0
- package/packages/runtime/dist/grounding.d.ts.map +1 -0
- package/packages/runtime/dist/grounding.js +158 -0
- package/packages/runtime/dist/grounding.js.map +1 -0
- package/packages/runtime/dist/index.d.ts +1 -0
- package/packages/runtime/dist/index.d.ts.map +1 -1
- package/packages/runtime/dist/index.js +1 -0
- package/packages/runtime/dist/index.js.map +1 -1
- package/packages/runtime/dist/loop.d.ts +13 -0
- package/packages/runtime/dist/loop.d.ts.map +1 -1
- package/packages/runtime/dist/loop.js +98 -3
- package/packages/runtime/dist/loop.js.map +1 -1
- package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/.tsbuildinfo +1 -1
- package/packages/tools/email/dist/.tsbuildinfo +1 -1
- package/packages/tools/email/dist/agent.d.ts +6 -1
- package/packages/tools/email/dist/agent.d.ts.map +1 -1
- package/packages/tools/email/dist/agent.js +6 -1
- package/packages/tools/email/dist/agent.js.map +1 -1
- package/packages/tools/email/dist/imap/fake.d.ts +8 -0
- package/packages/tools/email/dist/imap/fake.d.ts.map +1 -1
- package/packages/tools/email/dist/imap/fake.js +15 -0
- package/packages/tools/email/dist/imap/fake.js.map +1 -1
- package/packages/tools/email/dist/imap/imapflow-client.d.ts.map +1 -1
- package/packages/tools/email/dist/imap/imapflow-client.js +26 -17
- package/packages/tools/email/dist/imap/imapflow-client.js.map +1 -1
- package/packages/tools/email/dist/index.d.ts +5 -1
- package/packages/tools/email/dist/index.d.ts.map +1 -1
- package/packages/tools/email/dist/index.js +11 -3
- package/packages/tools/email/dist/index.js.map +1 -1
- package/packages/tools/email/dist/mail.d.ts.map +1 -1
- package/packages/tools/email/dist/mail.js +4 -1
- package/packages/tools/email/dist/mail.js.map +1 -1
- package/packages/tools/email/dist/pages/index.d.ts +2 -1
- package/packages/tools/email/dist/pages/index.d.ts.map +1 -1
- package/packages/tools/email/dist/pages/index.js +2 -2
- package/packages/tools/email/dist/pages/index.js.map +1 -1
- package/packages/tools/email/dist/pages/queries.d.ts +3 -2
- package/packages/tools/email/dist/pages/queries.d.ts.map +1 -1
- package/packages/tools/email/dist/pages/queries.js +19 -7
- package/packages/tools/email/dist/pages/queries.js.map +1 -1
- package/packages/tools/email/dist/ports.d.ts +15 -0
- package/packages/tools/email/dist/ports.d.ts.map +1 -1
- package/packages/tools/email/dist/ports.js.map +1 -1
- package/packages/tools/email/dist/sources/inbox-poll.d.ts +9 -1
- package/packages/tools/email/dist/sources/inbox-poll.d.ts.map +1 -1
- package/packages/tools/email/dist/sources/inbox-poll.js +1 -0
- package/packages/tools/email/dist/sources/inbox-poll.js.map +1 -1
- package/packages/tools/email/dist/text-cleanup.d.ts +69 -0
- package/packages/tools/email/dist/text-cleanup.d.ts.map +1 -0
- package/packages/tools/email/dist/text-cleanup.js +96 -0
- package/packages/tools/email/dist/text-cleanup.js.map +1 -0
- package/packages/tools/email/dist/text.d.ts +29 -0
- package/packages/tools/email/dist/text.d.ts.map +1 -0
- package/packages/tools/email/dist/text.js +153 -0
- package/packages/tools/email/dist/text.js.map +1 -0
- package/packages/tools/email/dist/worker.d.ts +64 -0
- package/packages/tools/email/dist/worker.d.ts.map +1 -0
- package/packages/tools/email/dist/worker.js +123 -0
- package/packages/tools/email/dist/worker.js.map +1 -0
- package/packages/tools/email/migrations/028_reading.sql +5 -2
- package/packages/tools/host/dist/.tsbuildinfo +1 -1
- package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
- package/packages/tools/memory/dist/.tsbuildinfo +1 -1
- package/packages/tools/web/dist/.tsbuildinfo +1 -1
- package/packages/web/dist/assets/index-CPFSREcP.css +1 -0
- package/packages/web/dist/assets/index-DYUn1V0x.js +150 -0
- package/packages/web/dist/assets/{lottie_light-DnYl9yaP.js → lottie_light-DxWeiVDC.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/precache.json +4 -4
- package/packages/web/dist/assets/index-C1sRt7zd.js +0 -149
- package/packages/web/dist/assets/index-CdZpSJ4_.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/tips/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/tips/route.ts"],"names":[],"mappings":"AAoBA,OAAO,EAA6B,KAAK,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAOD,wBAAsB,SAAS,CAC7B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACjH,OAAO,CAAC,SAAS,CAAC,CAuFpB"}
|
|
@@ -1,54 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The tips' routes (docs/dashboard.md, Home):
|
|
3
3
|
*
|
|
4
|
-
* GET /api/tips { tips: [...rows]
|
|
5
|
-
* GET /api/tips/current { tip | null
|
|
4
|
+
* GET /api/tips { tips: [...rows] } every rule and where it stands
|
|
5
|
+
* GET /api/tips/current { tip | null } today's tip, if any
|
|
6
|
+
* GET /api/tips/queue { tips: [...], dismissed } the bulb's stack: today's tip first, then every other
|
|
7
|
+
* one that holds and is not dismissed, ready ones before those in their cooldown;
|
|
8
|
+
* `dismissed` counts the dismissed ones that hold
|
|
9
|
+
* (`?peek=1`: today's and the ready ones only, nothing marked shown: for the bulb's dot)
|
|
10
|
+
* GET /api/tips/dismissed { tips: [...] } the dismissed ones the queue counts, for "Bring back"
|
|
6
11
|
* POST /api/tips/:id/dismiss "Not this again": never again
|
|
7
12
|
* POST /api/tips/:id/later ×: not before its cooldown has passed
|
|
8
13
|
* POST /api/tips/:id/restore "Bring back": forget a dismissal
|
|
9
14
|
* POST /api/tips/seen-page { page } the dashboard opened a page (once a day each)
|
|
10
|
-
* GET /api/tips/settings { enabled }
|
|
11
|
-
* PUT /api/tips/settings { enabled } Settings → Notifications → Tips on Home
|
|
12
15
|
*
|
|
13
|
-
* State lives in `core.web_settings`: `tips.state` (the engine's)
|
|
14
|
-
*
|
|
16
|
+
* State lives in `core.web_settings`: `tips.state` (the engine's) and
|
|
17
|
+
* `tips.pages`. A `tips.enabled` left from the old "Tips on Home" switch is
|
|
18
|
+
* ignored: tips sit behind the bulb, which is the owner's choice to look.
|
|
15
19
|
*/
|
|
16
|
-
import { dayIn, dismissTip, laterTip, listTips, pickTip, restoreTip, viewOf } from './engine.js';
|
|
20
|
+
import { dayIn, dismissTip, laterTip, listDismissed, listTips, pickQueue, pickTip, restoreTip, viewOf } from './engine.js';
|
|
17
21
|
import { PAGE_NAME, recordPageSeen } from './facts.js';
|
|
18
22
|
import { TIPS } from './rules.js';
|
|
19
23
|
export const TIPS_STATE_KEY = 'tips.state';
|
|
20
|
-
export const TIPS_ENABLED_KEY = 'tips.enabled';
|
|
21
24
|
async function readState(store) {
|
|
22
25
|
const value = await store.read(TIPS_STATE_KEY).catch(() => null);
|
|
23
26
|
return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
|
|
24
27
|
}
|
|
25
|
-
/** Whether tips are on. Anything but an explicit `false` is on. */
|
|
26
|
-
export async function tipsEnabled(store) {
|
|
27
|
-
const value = await store.read(TIPS_ENABLED_KEY).catch(() => null);
|
|
28
|
-
return value !== false;
|
|
29
|
-
}
|
|
30
28
|
export async function tipsRoute(deps, request) {
|
|
31
29
|
const { method, path } = request;
|
|
32
30
|
const body = request.body ?? {};
|
|
33
31
|
const rules = deps.rules ?? TIPS;
|
|
34
32
|
const today = dayIn(deps.now(), deps.timezone);
|
|
35
|
-
if (path === '/api/tips/settings') {
|
|
36
|
-
if (method === 'PUT') {
|
|
37
|
-
if (typeof body.enabled !== 'boolean')
|
|
38
|
-
return { status: 400, body: { error: '`enabled` must be true or false.' } };
|
|
39
|
-
await deps.store.write(TIPS_ENABLED_KEY, body.enabled);
|
|
40
|
-
}
|
|
41
|
-
else if (method !== 'GET') {
|
|
42
|
-
return { status: 405, body: { error: 'GET or PUT.' } };
|
|
43
|
-
}
|
|
44
|
-
return { status: 200, body: { enabled: await tipsEnabled(deps.store) } };
|
|
45
|
-
}
|
|
46
33
|
if (path === '/api/tips') {
|
|
47
34
|
if (method !== 'GET')
|
|
48
35
|
return { status: 405, body: { error: 'GET only.' } };
|
|
49
|
-
// Reads only: listing never marks a tip shown.
|
|
36
|
+
// Reads only: listing never marks a tip shown.
|
|
50
37
|
const tips = listTips(rules, await deps.facts(), await readState(deps.store), today);
|
|
51
|
-
return { status: 200, body: { tips
|
|
38
|
+
return { status: 200, body: { tips } };
|
|
52
39
|
}
|
|
53
40
|
if (path === '/api/tips/current') {
|
|
54
41
|
if (method !== 'GET')
|
|
@@ -59,16 +46,53 @@ export async function tipsRoute(deps, request) {
|
|
|
59
46
|
if (preview !== null) {
|
|
60
47
|
const rule = rules.find((r) => r.id === preview);
|
|
61
48
|
return rule
|
|
62
|
-
? { status: 200, body: { tip: viewOf(rule, await deps.facts()),
|
|
49
|
+
? { status: 200, body: { tip: viewOf(rule, await deps.facts()), preview: true } }
|
|
63
50
|
: { status: 404, body: { error: `No tip called "${preview}". Known: ${rules.map((r) => r.id).join(', ')}.` } };
|
|
64
51
|
}
|
|
65
|
-
if (!(await tipsEnabled(deps.store)))
|
|
66
|
-
return { status: 200, body: { tip: null, enabled: false } };
|
|
67
52
|
const previous = await readState(deps.store);
|
|
68
53
|
const { tip, state } = pickTip(rules, await deps.facts(), previous, today);
|
|
69
54
|
if (JSON.stringify(state) !== JSON.stringify(previous))
|
|
70
55
|
await deps.store.write(TIPS_STATE_KEY, state);
|
|
71
|
-
return { status: 200, body: { tip
|
|
56
|
+
return { status: 200, body: { tip } };
|
|
57
|
+
}
|
|
58
|
+
if (path === '/api/tips/queue') {
|
|
59
|
+
if (method !== 'GET')
|
|
60
|
+
return { status: 405, body: { error: 'GET only.' } };
|
|
61
|
+
// `?preview=a,b,c` stacks those rules' cards as they would look, touching no state.
|
|
62
|
+
const preview = request.preview ?? null;
|
|
63
|
+
if (preview !== null) {
|
|
64
|
+
const ids = preview.split(',').map((id) => id.trim()).filter(Boolean);
|
|
65
|
+
const unknown = ids.filter((id) => !rules.some((r) => r.id === id));
|
|
66
|
+
if (ids.length === 0 || unknown.length) {
|
|
67
|
+
return { status: 404, body: { error: `No tip called "${unknown[0] ?? preview}". Known: ${rules.map((r) => r.id).join(', ')}.` } };
|
|
68
|
+
}
|
|
69
|
+
const f = await deps.facts();
|
|
70
|
+
return { status: 200, body: { tips: ids.map((id) => viewOf(rules.find((r) => r.id === id), f)), preview: true } };
|
|
71
|
+
}
|
|
72
|
+
const previous = await readState(deps.store);
|
|
73
|
+
const { tips, state, dismissed } = pickQueue(rules, await deps.facts(), previous, today, { open: !request.peek });
|
|
74
|
+
// A peek keeps the holds counting but marks nothing shown: the owner has
|
|
75
|
+
// not opened the stack, so no tip's cooldown starts.
|
|
76
|
+
const front = tips[0]?.id;
|
|
77
|
+
if (request.peek && front && state[front]?.shownAt !== previous[front]?.shownAt) {
|
|
78
|
+
const before = previous[front]?.shownAt;
|
|
79
|
+
if (before)
|
|
80
|
+
state[front] = { ...state[front], shownAt: before };
|
|
81
|
+
else {
|
|
82
|
+
const { shownAt: _s, ...rest } = state[front];
|
|
83
|
+
state[front] = rest;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (JSON.stringify(state) !== JSON.stringify(previous))
|
|
87
|
+
await deps.store.write(TIPS_STATE_KEY, state);
|
|
88
|
+
return { status: 200, body: { tips, dismissed } };
|
|
89
|
+
}
|
|
90
|
+
if (path === '/api/tips/dismissed') {
|
|
91
|
+
if (method !== 'GET')
|
|
92
|
+
return { status: 405, body: { error: 'GET only.' } };
|
|
93
|
+
// Reads only: the state is what the queue left it as.
|
|
94
|
+
const tips = listDismissed(rules, await deps.facts(), await readState(deps.store), today);
|
|
95
|
+
return { status: 200, body: { tips } };
|
|
72
96
|
}
|
|
73
97
|
if (path === '/api/tips/seen-page') {
|
|
74
98
|
if (method !== 'POST')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/tips/route.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/tips/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* something the owner already set up — the mail plugin polls every mailbox and
|
|
7
7
|
* hands each new message to `mail-triage`, which nothing creates. Those carry
|
|
8
8
|
* an `offer`, and Home shows it while nobody has that id, the plugin says it is
|
|
9
|
-
* wanted, and the owner has not dismissed it.
|
|
9
|
+
* wanted, and the owner has not dismissed it. A mail agent is not offered
|
|
10
|
+
* while any agent on the team carries the `mail` role.
|
|
10
11
|
*
|
|
11
12
|
* Accepting is not here. It is `POST /api/plugins/<plugin>/agents/<id>/accept`
|
|
12
13
|
* (`acceptAgentRoute`), the gated `platform.accept_plugin_agent` the Plugins
|
|
@@ -35,6 +36,12 @@ export interface AgentOffersDeps extends PagesDeps {
|
|
|
35
36
|
};
|
|
36
37
|
/** The ids the roster holds right now. */
|
|
37
38
|
agentIds: () => readonly string[];
|
|
39
|
+
/**
|
|
40
|
+
* The roles the roster's agents carry right now. An offer is not made when
|
|
41
|
+
* somebody on the team already carries the `mail` role it would fill: mail
|
|
42
|
+
* is read, and the owner would read the card as a bug. Absent counts as none.
|
|
43
|
+
*/
|
|
44
|
+
agentRoles?: () => readonly string[];
|
|
38
45
|
/**
|
|
39
46
|
* Is first run not under way? While it runs, Home’s offers stay
|
|
40
47
|
* quiet: chapter 4's mailbox sheet brings Mail Triage in itself. Absent
|
|
@@ -42,6 +49,8 @@ export interface AgentOffersDeps extends PagesDeps {
|
|
|
42
49
|
*/
|
|
43
50
|
firstRunDone?: () => Promise<boolean>;
|
|
44
51
|
}
|
|
52
|
+
/** The role whose offer is not made while an agent already carries it. */
|
|
53
|
+
export declare const MAIL_ROLE = "mail";
|
|
45
54
|
/**
|
|
46
55
|
* The offers to draw: proposed with an `offer`, nobody has that id, not
|
|
47
56
|
* dismissed, and — when the plugin names a query — wanted now.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-offers.d.ts","sourceRoot":"","sources":["../../src/web/agent-offers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-offers.d.ts","sourceRoot":"","sources":["../../src/web/agent-offers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1D,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAa/C,kCAAkC;AAClC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,IAAI,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAAE,IAAI,EAAE,GAAG,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAC3E,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IACrC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAED,0EAA0E;AAC1E,eAAO,MAAM,SAAS,SAAS,CAAC;AA4ChC;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC,CAqBlG;AAED,uFAAuF;AACvF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAO5C;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAQ5F;AAED,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,0EAA0E;IAC1E,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiCpG"}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* something the owner already set up — the mail plugin polls every mailbox and
|
|
7
7
|
* hands each new message to `mail-triage`, which nothing creates. Those carry
|
|
8
8
|
* an `offer`, and Home shows it while nobody has that id, the plugin says it is
|
|
9
|
-
* wanted, and the owner has not dismissed it.
|
|
9
|
+
* wanted, and the owner has not dismissed it. A mail agent is not offered
|
|
10
|
+
* while any agent on the team carries the `mail` role.
|
|
10
11
|
*
|
|
11
12
|
* Accepting is not here. It is `POST /api/plugins/<plugin>/agents/<id>/accept`
|
|
12
13
|
* (`acceptAgentRoute`), the gated `platform.accept_plugin_agent` the Plugins
|
|
@@ -18,6 +19,14 @@ import { pluginAgentProposals } from '../agents/platform.js';
|
|
|
18
19
|
import { runPageQuery } from './pages.js';
|
|
19
20
|
/** The `core.web_settings` key the owner's dismissals are kept under. */
|
|
20
21
|
export const AGENT_OFFERS_KEY = 'agent-offers';
|
|
22
|
+
/** The role whose offer is not made while an agent already carries it. */
|
|
23
|
+
export const MAIL_ROLE = 'mail';
|
|
24
|
+
/** Whether the team already has an agent in the `mail` role this offered agent would fill. */
|
|
25
|
+
function roleTaken(deps, roles) {
|
|
26
|
+
if (!roles?.includes(MAIL_ROLE) || !deps.agentRoles)
|
|
27
|
+
return false;
|
|
28
|
+
return deps.agentRoles().includes(MAIL_ROLE);
|
|
29
|
+
}
|
|
21
30
|
function keyOf(plugin, agent) {
|
|
22
31
|
return `${plugin}/${agent}`;
|
|
23
32
|
}
|
|
@@ -69,6 +78,8 @@ export async function readAgentOffers(deps) {
|
|
|
69
78
|
continue;
|
|
70
79
|
if (present.has(agent.id) || dismissed.has(keyOf(plugin, agent.id)))
|
|
71
80
|
continue;
|
|
81
|
+
if (roleTaken(deps, agent.roles))
|
|
82
|
+
continue;
|
|
72
83
|
if (!(await wanted(deps, plugin, offer.query)))
|
|
73
84
|
continue;
|
|
74
85
|
offers.push({
|
|
@@ -130,6 +141,8 @@ export async function raiseAgentOffers(deps, plugin) {
|
|
|
130
141
|
continue;
|
|
131
142
|
if (deps.agentIds().includes(agent.id))
|
|
132
143
|
continue;
|
|
144
|
+
if (roleTaken(deps, agent.roles))
|
|
145
|
+
continue;
|
|
133
146
|
const pending = await listPendingActions(deps.pool, { now: deps.now() }).catch(() => []);
|
|
134
147
|
if (pending.some((action) => isPendingAccept(action, plugin, agent.id)))
|
|
135
148
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-offers.js","sourceRoot":"","sources":["../../src/web/agent-offers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-offers.js","sourceRoot":"","sources":["../../src/web/agent-offers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../src/web/api-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpE,gDAAgD;AAChD,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qGAAqG;AACrG,eAAO,MAAM,cAAc;;;;;;;;CAQjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,cAAc,CAAC;AAEvD,6CAA6C;AAC7C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;CAuBZ,CAAC;AACX,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,SAAS,CAAC;AAK7C,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,
|
|
1
|
+
{"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../src/web/api-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpE,gDAAgD;AAChD,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qGAAqG;AACrG,eAAO,MAAM,cAAc;;;;;;;;CAQjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,cAAc,CAAC;AAEvD,6CAA6C;AAC7C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;CAuBZ,CAAC;AACX,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,SAAS,CAAC;AAK7C,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAy5BzC,CAAC;AAYF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CASpF;AAMD,wBAAgB,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAI9C;AAkDD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,SAAS,QAAQ,EAAe,EAAE,KAAK,GAAE,MAAkB,GAAG,MAAM,CAuC9G;AAED,oFAAoF;AACpF,eAAO,MAAM,SAAS,q/NAoJrB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwUtD,CAAC"}
|
|
@@ -229,14 +229,18 @@ export const API_ROUTES = [
|
|
|
229
229
|
summary: "Home's whole first read: plugin blocks and glances, and counts of approvals, jobs, missions, reminders, watchers.",
|
|
230
230
|
answer: '{ now, timezone, paused, home: HomeBlock[], glances, approvals: { pending, oldestPendingAt }, jobs: Record<state, number>, missions, reminders, sentinels, mail, running, needsYou: { approvals, questions, urgent, failed, proposals, asks, agentsToSetUp, signIns, recovery, total } }',
|
|
231
231
|
},
|
|
232
|
-
{ method: 'GET', path: '/api/tips', area: 'home', summary: 'Every tip and its state.', answer: '{ tips: Tip[]
|
|
232
|
+
{ method: 'GET', path: '/api/tips', area: 'home', summary: 'Every tip and its state.', answer: '{ tips: Tip[] }' },
|
|
233
233
|
{
|
|
234
234
|
method: 'GET', path: '/api/tips/current', area: 'home', summary: "Today's tip on Home, if any (picking one is remembered).",
|
|
235
|
-
query: 'preview?: tip id // show one as it would look, touching nothing', answer: '{ tip: Tip|null
|
|
235
|
+
query: 'preview?: tip id // show one as it would look, touching nothing', answer: '{ tip: Tip|null }',
|
|
236
236
|
errors: '404 no tip by the preview id',
|
|
237
237
|
},
|
|
238
|
-
{
|
|
239
|
-
|
|
238
|
+
{
|
|
239
|
+
method: 'GET', path: '/api/tips/queue', area: 'home', summary: "The stack the lightbulb on Home opens: today's tip first, then every other one that holds and is not dismissed, ready ones before those in their cooldown (picking the first is remembered).",
|
|
240
|
+
query: "preview?: tip ids, comma-separated // stack those as they would look, touching nothing; peek?: '1' // today's and the ready ones only, marking nothing shown", answer: '{ tips: Tip[], dismissed: number }',
|
|
241
|
+
errors: '404 no tip by a preview id',
|
|
242
|
+
},
|
|
243
|
+
{ method: 'GET', path: '/api/tips/dismissed', area: 'home', summary: 'The dismissed tips the queue counts, for the empty stack\'s "Bring back" list.', answer: '{ tips: Tip[] }' },
|
|
240
244
|
{ method: 'POST', path: '/api/tips/seen-page', area: 'home', summary: 'Record that a page was opened (tips about it stop).', body: '{ page: string }', answer: '{ ok: true }' },
|
|
241
245
|
{ method: 'POST', path: '/api/tips/:id/dismiss', area: 'home', summary: 'Never show this tip again.', answer: '{ ok: true }', errors: '404 no such tip' },
|
|
242
246
|
{ method: 'POST', path: '/api/tips/:id/later', area: 'home', summary: 'Show this tip another day.', answer: '{ ok: true }', errors: '404 no such tip' },
|
|
@@ -383,6 +387,13 @@ export const API_ROUTES = [
|
|
|
383
387
|
},
|
|
384
388
|
{ method: 'POST', path: '/api/agents/default', area: 'agents', summary: 'Make an agent the default (where a chat that names nobody lands).', body: '{ agentId: string }', errors: '400; 404' },
|
|
385
389
|
{ method: 'GET', path: '/api/agents/:id/profile', area: 'agents', summary: "One agent whole: its grant with every tool's tier, engine, skills, delegates.", errors: '404 no such agent' },
|
|
390
|
+
{
|
|
391
|
+
method: 'GET', path: '/api/agents/:id/intro', area: 'agents',
|
|
392
|
+
summary: "A new agent's first-open strip in its chat: whether it is still due, whom the agent may ask and who may ask it.",
|
|
393
|
+
answer: "{ show: false } | { show: true, id, handle, asks: 'everyone' | IntroAgent[], askedBy: IntroAgent[] } // IntroAgent: { id, handle, name, frontDesk? }",
|
|
394
|
+
errors: '404',
|
|
395
|
+
},
|
|
396
|
+
{ method: 'POST', path: '/api/agents/:id/intro/dismiss', area: 'agents', summary: "Close a new agent's first-open strip for good.", answer: '{ ok: true }', errors: '404' },
|
|
386
397
|
{ method: 'GET', path: '/api/agents/:id/skills', area: 'agents', summary: 'Every skill the agent loads; learned ones with their versions.', errors: '404' },
|
|
387
398
|
{
|
|
388
399
|
method: 'POST', path: '/api/agents/:id/skills/:skill/remove', area: 'agents', summary: 'Remove a learned skill (its versions are kept).',
|
|
@@ -1339,8 +1350,8 @@ export const API_SINCE = {
|
|
|
1339
1350
|
'GET /api/overview': '0.1.0-pre.15',
|
|
1340
1351
|
'GET /api/tips': '0.1.0-pre.22',
|
|
1341
1352
|
'GET /api/tips/current': '0.1.0-pre.22',
|
|
1342
|
-
'GET /api/tips/
|
|
1343
|
-
'
|
|
1353
|
+
'GET /api/tips/queue': '0.1.0-pre.45',
|
|
1354
|
+
'GET /api/tips/dismissed': '0.1.0-pre.45',
|
|
1344
1355
|
'POST /api/tips/seen-page': '0.1.0-pre.22',
|
|
1345
1356
|
'POST /api/tips/:id/dismiss': '0.1.0-pre.22',
|
|
1346
1357
|
'POST /api/tips/:id/later': '0.1.0-pre.22',
|
|
@@ -1378,6 +1389,8 @@ export const API_SINCE = {
|
|
|
1378
1389
|
'GET /api/agents': '0.1.0-pre.15',
|
|
1379
1390
|
'POST /api/agents/default': '0.1.0-pre.15',
|
|
1380
1391
|
'GET /api/agents/:id/profile': '0.1.0-pre.15',
|
|
1392
|
+
'GET /api/agents/:id/intro': '0.1.0-pre.45',
|
|
1393
|
+
'POST /api/agents/:id/intro/dismiss': '0.1.0-pre.45',
|
|
1381
1394
|
'GET /api/agents/:id/skills': '0.1.0-pre.15',
|
|
1382
1395
|
'POST /api/agents/:id/skills/:skill/remove': '0.1.0-pre.15',
|
|
1383
1396
|
'GET /api/agents/:id/tools': '0.1.0-pre.15',
|