@withbuddi/buddi 0.1.0-pre.18 → 0.1.0-pre.19
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/README.md +10 -4
- package/extension/background.js +38 -7
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/args.d.ts +7 -0
- package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/args.js +14 -0
- package/node_modules/@buddi/cli/dist/args.js.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.js +36 -1
- package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
- package/node_modules/@buddi/cli/dist/dashboard-app.d.ts +6 -0
- package/node_modules/@buddi/cli/dist/dashboard-app.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/dashboard-app.js +16 -1
- package/node_modules/@buddi/cli/dist/dashboard-app.js.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor-probes.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor-probes.js +5 -2
- package/node_modules/@buddi/cli/dist/doctor-probes.js.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor.d.ts +16 -0
- package/node_modules/@buddi/cli/dist/doctor.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor.js +18 -0
- package/node_modules/@buddi/cli/dist/doctor.js.map +1 -1
- package/node_modules/@buddi/cli/dist/index.d.ts +1 -0
- package/node_modules/@buddi/cli/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/index.js +1 -0
- package/node_modules/@buddi/cli/dist/index.js.map +1 -1
- package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/main.js +10 -0
- package/node_modules/@buddi/cli/dist/main.js.map +1 -1
- package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts +42 -0
- package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts.map +1 -0
- package/node_modules/@buddi/cli/dist/uninstall-cmd.js +208 -0
- package/node_modules/@buddi/cli/dist/uninstall-cmd.js.map +1 -0
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/agents/models.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/models.js +4 -3
- package/node_modules/@buddi/core/dist/agents/models.js.map +1 -1
- package/node_modules/@buddi/core/dist/agents/skills.d.ts +2 -2
- package/node_modules/@buddi/core/dist/goals/frequency.d.ts +51 -0
- package/node_modules/@buddi/core/dist/goals/frequency.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/goals/frequency.js +113 -0
- package/node_modules/@buddi/core/dist/goals/frequency.js.map +1 -0
- package/node_modules/@buddi/core/dist/goals/index.d.ts +2 -0
- package/node_modules/@buddi/core/dist/goals/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/goals/index.js +2 -0
- package/node_modules/@buddi/core/dist/goals/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/goals/math.d.ts +8 -2
- package/node_modules/@buddi/core/dist/goals/math.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/goals/math.js +17 -4
- package/node_modules/@buddi/core/dist/goals/math.js.map +1 -1
- package/node_modules/@buddi/core/dist/goals/owner.d.ts +129 -0
- package/node_modules/@buddi/core/dist/goals/owner.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/goals/owner.js +239 -0
- package/node_modules/@buddi/core/dist/goals/owner.js.map +1 -0
- package/node_modules/@buddi/core/dist/goals/store.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/goals/store.js +11 -4
- package/node_modules/@buddi/core/dist/goals/store.js.map +1 -1
- package/node_modules/@buddi/core/dist/goals/types.d.ts +17 -3
- package/node_modules/@buddi/core/dist/goals/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/goals/types.js +8 -2
- package/node_modules/@buddi/core/dist/goals/types.js.map +1 -1
- package/node_modules/@buddi/core/dist/learning/announce.d.ts +29 -0
- package/node_modules/@buddi/core/dist/learning/announce.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/learning/announce.js +49 -0
- package/node_modules/@buddi/core/dist/learning/announce.js.map +1 -0
- package/node_modules/@buddi/core/dist/learning/index.d.ts +1 -0
- package/node_modules/@buddi/core/dist/learning/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/learning/index.js +1 -0
- package/node_modules/@buddi/core/dist/learning/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/learning/store.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/learning/store.js +15 -4
- package/node_modules/@buddi/core/dist/learning/store.js.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/notify.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/notify.js +1 -0
- package/node_modules/@buddi/core/dist/notifications/notify.js.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/store.d.ts +2 -0
- package/node_modules/@buddi/core/dist/notifications/store.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/store.js +9 -0
- package/node_modules/@buddi/core/dist/notifications/store.js.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/types.d.ts +6 -0
- package/node_modules/@buddi/core/dist/notifications/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/pages.d.ts +2 -2
- package/node_modules/@buddi/core/dist/sentinels/run.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/sentinels/run.js +4 -1
- package/node_modules/@buddi/core/dist/sentinels/run.js.map +1 -1
- package/node_modules/@buddi/core/dist/sentinels/types.d.ts +20 -0
- package/node_modules/@buddi/core/dist/sentinels/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/sentinels/types.js.map +1 -1
- package/node_modules/@buddi/core/dist/surfaces.d.ts +2 -0
- package/node_modules/@buddi/core/dist/surfaces.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/surfaces.js +7 -0
- package/node_modules/@buddi/core/dist/surfaces.js.map +1 -1
- package/node_modules/@buddi/core/dist/uninstall.d.ts +79 -0
- package/node_modules/@buddi/core/dist/uninstall.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/uninstall.js +109 -0
- package/node_modules/@buddi/core/dist/uninstall.js.map +1 -0
- package/node_modules/@buddi/core/dist/views.d.ts +66 -66
- package/node_modules/@buddi/core/migrations/044_owner_metrics.sql +45 -0
- package/node_modules/@buddi/core/migrations/045_frequency_goals.sql +19 -0
- package/node_modules/@buddi/core/package.json +4 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/chat/usage.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/chat/usage.js +1 -0
- package/node_modules/@buddi/gateway/dist/chat/usage.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/index.d.ts +1 -0
- package/node_modules/@buddi/gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/index.js +1 -0
- package/node_modules/@buddi/gateway/dist/index.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/agent-run.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/agent-run.js +1 -0
- package/node_modules/@buddi/gateway/dist/missions/agent-run.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts +7 -0
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js +3 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/goals-format.d.ts +32 -5
- package/node_modules/@buddi/gateway/dist/missions/goals-format.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/goals-format.js +59 -2
- package/node_modules/@buddi/gateway/dist/missions/goals-format.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/goals-page.d.ts +60 -5
- package/node_modules/@buddi/gateway/dist/missions/goals-page.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/goals-page.js +355 -8
- package/node_modules/@buddi/gateway/dist/missions/goals-page.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/goals.d.ts +64 -5
- package/node_modules/@buddi/gateway/dist/missions/goals.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/goals.js +834 -116
- package/node_modules/@buddi/gateway/dist/missions/goals.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/sentinel-wake.d.ts +5 -0
- package/node_modules/@buddi/gateway/dist/missions/sentinel-wake.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/sentinel-wake.js +12 -0
- package/node_modules/@buddi/gateway/dist/missions/sentinel-wake.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.d.ts +2 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.js +6 -2
- package/node_modules/@buddi/gateway/dist/owner-notify.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/provider-accounts.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/provider-accounts.js +22 -13
- package/node_modules/@buddi/gateway/dist/provider-accounts.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +1 -0
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/subscription-signins.d.ts +28 -0
- package/node_modules/@buddi/gateway/dist/subscription-signins.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/subscription-signins.js +30 -0
- package/node_modules/@buddi/gateway/dist/subscription-signins.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/api.d.ts +43 -9
- package/node_modules/@buddi/gateway/dist/telegram/api.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/api.js +80 -21
- package/node_modules/@buddi/gateway/dist/telegram/api.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/attachments.d.ts +6 -0
- package/node_modules/@buddi/gateway/dist/telegram/attachments.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/attachments.js +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/attachments.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.js +2 -1
- package/node_modules/@buddi/gateway/dist/telegram/browser-view.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/channel.d.ts +7 -1
- package/node_modules/@buddi/gateway/dist/telegram/channel.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/channel.js +24 -2
- package/node_modules/@buddi/gateway/dist/telegram/channel.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/commands.d.ts +28 -0
- package/node_modules/@buddi/gateway/dist/telegram/commands.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/commands.js +74 -0
- package/node_modules/@buddi/gateway/dist/telegram/commands.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/main.d.ts +3 -0
- package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/main.js +71 -2
- package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts +191 -0
- package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/outbound.js +671 -0
- package/node_modules/@buddi/gateway/dist/telegram/outbound.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/proposals.d.ts +65 -0
- package/node_modules/@buddi/gateway/dist/telegram/proposals.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/proposals.js +183 -0
- package/node_modules/@buddi/gateway/dist/telegram/proposals.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +47 -47
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js +99 -290
- package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.js +4 -0
- package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/secrets.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/secrets.js +3 -2
- package/node_modules/@buddi/gateway/dist/web/secrets.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 +20 -1
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/telegram.d.ts +39 -0
- package/node_modules/@buddi/gateway/dist/web/telegram.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/telegram.js +53 -1
- package/node_modules/@buddi/gateway/dist/web/telegram.js.map +1 -1
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.js +135 -10
- package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
- package/node_modules/@buddi/install/dist/uninstall.d.ts +59 -0
- package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/uninstall.js +260 -0
- package/node_modules/@buddi/install/dist/uninstall.js.map +1 -0
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/context-window.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/context-window.js +5 -2
- package/node_modules/@buddi/runtime/dist/context-window.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.js +17 -2
- package/node_modules/@buddi/runtime/dist/openai.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-browser/dist/index.d.ts +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.js +12 -4
- package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/origin-pattern.d.ts +31 -0
- package/node_modules/@buddi/tool-browser/dist/origin-pattern.d.ts.map +1 -0
- package/node_modules/@buddi/tool-browser/dist/origin-pattern.js +61 -0
- package/node_modules/@buddi/tool-browser/dist/origin-pattern.js.map +1 -0
- package/node_modules/@buddi/tool-browser/dist/public-suffixes.d.ts +24 -0
- package/node_modules/@buddi/tool-browser/dist/public-suffixes.d.ts.map +1 -0
- package/node_modules/@buddi/tool-browser/dist/public-suffixes.js +153 -0
- package/node_modules/@buddi/tool-browser/dist/public-suffixes.js.map +1 -0
- package/node_modules/@buddi/tool-browser/dist/secrets.d.ts +45 -9
- package/node_modules/@buddi/tool-browser/dist/secrets.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/secrets.js +77 -20
- package/node_modules/@buddi/tool-browser/dist/secrets.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.d.ts +10 -0
- package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.js +84 -20
- package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.d.ts +7 -1
- package/node_modules/@buddi/tool-browser/dist/types.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.js +7 -1
- package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/read.js +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/read.js.map +1 -1
- package/node_modules/@buddi/tool-host/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/ws/lib/websocket.js +17 -3
- package/node_modules/ws/package.json +1 -1
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/args.d.ts +7 -0
- package/packages/cli/dist/args.d.ts.map +1 -1
- package/packages/cli/dist/args.js +14 -0
- package/packages/cli/dist/args.js.map +1 -1
- package/packages/cli/dist/commands.d.ts.map +1 -1
- package/packages/cli/dist/commands.js +36 -1
- package/packages/cli/dist/commands.js.map +1 -1
- package/packages/cli/dist/dashboard-app.d.ts +6 -0
- package/packages/cli/dist/dashboard-app.d.ts.map +1 -1
- package/packages/cli/dist/dashboard-app.js +16 -1
- package/packages/cli/dist/dashboard-app.js.map +1 -1
- package/packages/cli/dist/doctor-probes.d.ts.map +1 -1
- package/packages/cli/dist/doctor-probes.js +5 -2
- package/packages/cli/dist/doctor-probes.js.map +1 -1
- package/packages/cli/dist/doctor.d.ts +16 -0
- package/packages/cli/dist/doctor.d.ts.map +1 -1
- package/packages/cli/dist/doctor.js +18 -0
- package/packages/cli/dist/doctor.js.map +1 -1
- package/packages/cli/dist/index.d.ts +1 -0
- package/packages/cli/dist/index.d.ts.map +1 -1
- package/packages/cli/dist/index.js +1 -0
- package/packages/cli/dist/index.js.map +1 -1
- package/packages/cli/dist/main.d.ts.map +1 -1
- package/packages/cli/dist/main.js +10 -0
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/dist/uninstall-cmd.d.ts +42 -0
- package/packages/cli/dist/uninstall-cmd.d.ts.map +1 -0
- package/packages/cli/dist/uninstall-cmd.js +208 -0
- package/packages/cli/dist/uninstall-cmd.js.map +1 -0
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/agents/models.d.ts.map +1 -1
- package/packages/core/dist/agents/models.js +4 -3
- package/packages/core/dist/agents/models.js.map +1 -1
- package/packages/core/dist/agents/skills.d.ts +2 -2
- package/packages/core/dist/goals/frequency.d.ts +51 -0
- package/packages/core/dist/goals/frequency.d.ts.map +1 -0
- package/packages/core/dist/goals/frequency.js +113 -0
- package/packages/core/dist/goals/frequency.js.map +1 -0
- package/packages/core/dist/goals/index.d.ts +2 -0
- package/packages/core/dist/goals/index.d.ts.map +1 -1
- package/packages/core/dist/goals/index.js +2 -0
- package/packages/core/dist/goals/index.js.map +1 -1
- package/packages/core/dist/goals/math.d.ts +8 -2
- package/packages/core/dist/goals/math.d.ts.map +1 -1
- package/packages/core/dist/goals/math.js +17 -4
- package/packages/core/dist/goals/math.js.map +1 -1
- package/packages/core/dist/goals/owner.d.ts +129 -0
- package/packages/core/dist/goals/owner.d.ts.map +1 -0
- package/packages/core/dist/goals/owner.js +239 -0
- package/packages/core/dist/goals/owner.js.map +1 -0
- package/packages/core/dist/goals/store.d.ts.map +1 -1
- package/packages/core/dist/goals/store.js +11 -4
- package/packages/core/dist/goals/store.js.map +1 -1
- package/packages/core/dist/goals/types.d.ts +17 -3
- package/packages/core/dist/goals/types.d.ts.map +1 -1
- package/packages/core/dist/goals/types.js +8 -2
- package/packages/core/dist/goals/types.js.map +1 -1
- package/packages/core/dist/learning/announce.d.ts +29 -0
- package/packages/core/dist/learning/announce.d.ts.map +1 -0
- package/packages/core/dist/learning/announce.js +49 -0
- package/packages/core/dist/learning/announce.js.map +1 -0
- package/packages/core/dist/learning/index.d.ts +1 -0
- package/packages/core/dist/learning/index.d.ts.map +1 -1
- package/packages/core/dist/learning/index.js +1 -0
- package/packages/core/dist/learning/index.js.map +1 -1
- package/packages/core/dist/learning/store.d.ts.map +1 -1
- package/packages/core/dist/learning/store.js +15 -4
- package/packages/core/dist/learning/store.js.map +1 -1
- package/packages/core/dist/notifications/notify.d.ts.map +1 -1
- package/packages/core/dist/notifications/notify.js +1 -0
- package/packages/core/dist/notifications/notify.js.map +1 -1
- package/packages/core/dist/notifications/store.d.ts +2 -0
- package/packages/core/dist/notifications/store.d.ts.map +1 -1
- package/packages/core/dist/notifications/store.js +9 -0
- package/packages/core/dist/notifications/store.js.map +1 -1
- package/packages/core/dist/notifications/types.d.ts +6 -0
- package/packages/core/dist/notifications/types.d.ts.map +1 -1
- package/packages/core/dist/pages.d.ts +2 -2
- package/packages/core/dist/sentinels/run.d.ts.map +1 -1
- package/packages/core/dist/sentinels/run.js +4 -1
- package/packages/core/dist/sentinels/run.js.map +1 -1
- package/packages/core/dist/sentinels/types.d.ts +20 -0
- package/packages/core/dist/sentinels/types.d.ts.map +1 -1
- package/packages/core/dist/sentinels/types.js.map +1 -1
- package/packages/core/dist/surfaces.d.ts +2 -0
- package/packages/core/dist/surfaces.d.ts.map +1 -1
- package/packages/core/dist/surfaces.js +7 -0
- package/packages/core/dist/surfaces.js.map +1 -1
- package/packages/core/dist/uninstall.d.ts +79 -0
- package/packages/core/dist/uninstall.d.ts.map +1 -0
- package/packages/core/dist/uninstall.js +109 -0
- package/packages/core/dist/uninstall.js.map +1 -0
- package/packages/core/dist/views.d.ts +66 -66
- package/packages/core/migrations/044_owner_metrics.sql +45 -0
- package/packages/core/migrations/045_frequency_goals.sql +19 -0
- package/packages/core/package.json +4 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/chat/usage.d.ts.map +1 -1
- package/packages/gateway/dist/chat/usage.js +1 -0
- package/packages/gateway/dist/chat/usage.js.map +1 -1
- package/packages/gateway/dist/index.d.ts +1 -0
- package/packages/gateway/dist/index.d.ts.map +1 -1
- package/packages/gateway/dist/index.js +1 -0
- package/packages/gateway/dist/index.js.map +1 -1
- package/packages/gateway/dist/missions/agent-run.d.ts.map +1 -1
- package/packages/gateway/dist/missions/agent-run.js +1 -0
- package/packages/gateway/dist/missions/agent-run.js.map +1 -1
- package/packages/gateway/dist/missions/execute.d.ts +7 -0
- package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
- package/packages/gateway/dist/missions/execute.js +3 -1
- package/packages/gateway/dist/missions/execute.js.map +1 -1
- package/packages/gateway/dist/missions/goals-format.d.ts +32 -5
- package/packages/gateway/dist/missions/goals-format.d.ts.map +1 -1
- package/packages/gateway/dist/missions/goals-format.js +59 -2
- package/packages/gateway/dist/missions/goals-format.js.map +1 -1
- package/packages/gateway/dist/missions/goals-page.d.ts +60 -5
- package/packages/gateway/dist/missions/goals-page.d.ts.map +1 -1
- package/packages/gateway/dist/missions/goals-page.js +355 -8
- package/packages/gateway/dist/missions/goals-page.js.map +1 -1
- package/packages/gateway/dist/missions/goals.d.ts +64 -5
- package/packages/gateway/dist/missions/goals.d.ts.map +1 -1
- package/packages/gateway/dist/missions/goals.js +834 -116
- package/packages/gateway/dist/missions/goals.js.map +1 -1
- package/packages/gateway/dist/missions/sentinel-wake.d.ts +5 -0
- package/packages/gateway/dist/missions/sentinel-wake.d.ts.map +1 -1
- package/packages/gateway/dist/missions/sentinel-wake.js +12 -0
- package/packages/gateway/dist/missions/sentinel-wake.js.map +1 -1
- package/packages/gateway/dist/owner-notify.d.ts +2 -1
- package/packages/gateway/dist/owner-notify.d.ts.map +1 -1
- package/packages/gateway/dist/owner-notify.js +6 -2
- package/packages/gateway/dist/owner-notify.js.map +1 -1
- package/packages/gateway/dist/provider-accounts.d.ts.map +1 -1
- package/packages/gateway/dist/provider-accounts.js +22 -13
- package/packages/gateway/dist/provider-accounts.js.map +1 -1
- package/packages/gateway/dist/serve.d.ts.map +1 -1
- package/packages/gateway/dist/serve.js +1 -0
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/subscription-signins.d.ts +28 -0
- package/packages/gateway/dist/subscription-signins.d.ts.map +1 -0
- package/packages/gateway/dist/subscription-signins.js +30 -0
- package/packages/gateway/dist/subscription-signins.js.map +1 -0
- package/packages/gateway/dist/telegram/api.d.ts +43 -9
- package/packages/gateway/dist/telegram/api.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/api.js +80 -21
- package/packages/gateway/dist/telegram/api.js.map +1 -1
- package/packages/gateway/dist/telegram/attachments.d.ts +6 -0
- package/packages/gateway/dist/telegram/attachments.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/attachments.js +1 -0
- package/packages/gateway/dist/telegram/attachments.js.map +1 -1
- package/packages/gateway/dist/telegram/browser-view.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/browser-view.js +2 -1
- package/packages/gateway/dist/telegram/browser-view.js.map +1 -1
- package/packages/gateway/dist/telegram/channel.d.ts +7 -1
- package/packages/gateway/dist/telegram/channel.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/channel.js +24 -2
- package/packages/gateway/dist/telegram/channel.js.map +1 -1
- package/packages/gateway/dist/telegram/commands.d.ts +28 -0
- package/packages/gateway/dist/telegram/commands.d.ts.map +1 -0
- package/packages/gateway/dist/telegram/commands.js +74 -0
- package/packages/gateway/dist/telegram/commands.js.map +1 -0
- package/packages/gateway/dist/telegram/main.d.ts +3 -0
- package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/main.js +71 -2
- package/packages/gateway/dist/telegram/main.js.map +1 -1
- package/packages/gateway/dist/telegram/outbound.d.ts +191 -0
- package/packages/gateway/dist/telegram/outbound.d.ts.map +1 -0
- package/packages/gateway/dist/telegram/outbound.js +671 -0
- package/packages/gateway/dist/telegram/outbound.js.map +1 -0
- package/packages/gateway/dist/telegram/proposals.d.ts +65 -0
- package/packages/gateway/dist/telegram/proposals.d.ts.map +1 -0
- package/packages/gateway/dist/telegram/proposals.js +183 -0
- package/packages/gateway/dist/telegram/proposals.js.map +1 -0
- package/packages/gateway/dist/telegram/surface.d.ts +47 -47
- package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/surface.js +99 -290
- package/packages/gateway/dist/telegram/surface.js.map +1 -1
- package/packages/gateway/dist/web/onboarding.d.ts.map +1 -1
- package/packages/gateway/dist/web/onboarding.js +4 -0
- package/packages/gateway/dist/web/onboarding.js.map +1 -1
- package/packages/gateway/dist/web/secrets.d.ts.map +1 -1
- package/packages/gateway/dist/web/secrets.js +3 -2
- package/packages/gateway/dist/web/secrets.js.map +1 -1
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +20 -1
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/telegram.d.ts +39 -0
- package/packages/gateway/dist/web/telegram.d.ts.map +1 -1
- package/packages/gateway/dist/web/telegram.js +53 -1
- package/packages/gateway/dist/web/telegram.js.map +1 -1
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/install/dist/launcher.d.ts.map +1 -1
- package/packages/install/dist/launcher.js +135 -10
- package/packages/install/dist/launcher.js.map +1 -1
- package/packages/install/dist/uninstall.d.ts +59 -0
- package/packages/install/dist/uninstall.d.ts.map +1 -0
- package/packages/install/dist/uninstall.js +260 -0
- package/packages/install/dist/uninstall.js.map +1 -0
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/context-window.d.ts.map +1 -1
- package/packages/runtime/dist/context-window.js +5 -2
- package/packages/runtime/dist/context-window.js.map +1 -1
- package/packages/runtime/dist/openai.d.ts.map +1 -1
- package/packages/runtime/dist/openai.js +17 -2
- package/packages/runtime/dist/openai.js.map +1 -1
- package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/index.d.ts +1 -1
- package/packages/tools/browser/dist/index.d.ts.map +1 -1
- package/packages/tools/browser/dist/index.js +12 -4
- package/packages/tools/browser/dist/index.js.map +1 -1
- package/packages/tools/browser/dist/origin-pattern.d.ts +31 -0
- package/packages/tools/browser/dist/origin-pattern.d.ts.map +1 -0
- package/packages/tools/browser/dist/origin-pattern.js +61 -0
- package/packages/tools/browser/dist/origin-pattern.js.map +1 -0
- package/packages/tools/browser/dist/public-suffixes.d.ts +24 -0
- package/packages/tools/browser/dist/public-suffixes.d.ts.map +1 -0
- package/packages/tools/browser/dist/public-suffixes.js +153 -0
- package/packages/tools/browser/dist/public-suffixes.js.map +1 -0
- package/packages/tools/browser/dist/secrets.d.ts +45 -9
- package/packages/tools/browser/dist/secrets.d.ts.map +1 -1
- package/packages/tools/browser/dist/secrets.js +77 -20
- package/packages/tools/browser/dist/secrets.js.map +1 -1
- package/packages/tools/browser/dist/service.d.ts +10 -0
- package/packages/tools/browser/dist/service.d.ts.map +1 -1
- package/packages/tools/browser/dist/service.js +84 -20
- package/packages/tools/browser/dist/service.js.map +1 -1
- package/packages/tools/browser/dist/types.d.ts +7 -1
- package/packages/tools/browser/dist/types.d.ts.map +1 -1
- package/packages/tools/browser/dist/types.js +7 -1
- package/packages/tools/browser/dist/types.js.map +1 -1
- package/packages/tools/email/dist/.tsbuildinfo +1 -1
- package/packages/tools/email/dist/tools/read.js +1 -1
- package/packages/tools/email/dist/tools/read.js.map +1 -1
- package/packages/tools/host/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-DCn0vN58.css → index-B727JQsO.css} +1 -1
- package/packages/web/dist/assets/index-OA0xgibo.js +123 -0
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/assets/index-BRkIoT-q.js +0 -123
|
@@ -36,12 +36,12 @@ export declare const skillFrontmatterSchema: z.ZodObject<{
|
|
|
36
36
|
conversation?: string | undefined;
|
|
37
37
|
source?: string | undefined;
|
|
38
38
|
sources?: string[] | undefined;
|
|
39
|
+
title?: string | undefined;
|
|
39
40
|
agent?: string | undefined;
|
|
40
41
|
provenance?: "owner" | "agent" | "imported" | undefined;
|
|
41
42
|
untrusted?: boolean | undefined;
|
|
42
43
|
proposal?: string | undefined;
|
|
43
44
|
version?: number | undefined;
|
|
44
|
-
title?: string | undefined;
|
|
45
45
|
agents?: string[] | undefined;
|
|
46
46
|
created?: string | undefined;
|
|
47
47
|
run_id?: string | undefined;
|
|
@@ -54,12 +54,12 @@ export declare const skillFrontmatterSchema: z.ZodObject<{
|
|
|
54
54
|
conversation?: unknown;
|
|
55
55
|
source?: unknown;
|
|
56
56
|
sources?: string[] | undefined;
|
|
57
|
+
title?: unknown;
|
|
57
58
|
agent?: unknown;
|
|
58
59
|
provenance?: "owner" | "agent" | "imported" | undefined;
|
|
59
60
|
untrusted?: boolean | undefined;
|
|
60
61
|
proposal?: unknown;
|
|
61
62
|
version?: number | undefined;
|
|
62
|
-
title?: unknown;
|
|
63
63
|
agents?: string[] | undefined;
|
|
64
64
|
created?: unknown;
|
|
65
65
|
run_id?: unknown;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { FrequencyPer, FrequencyTarget, Goal } from './types.js';
|
|
2
|
+
/** A window's standing. `open` is the current one, not yet at its count. */
|
|
3
|
+
export type WindowState = 'met' | 'short' | 'partial' | 'open';
|
|
4
|
+
export interface FrequencyWindow {
|
|
5
|
+
/** The owner's first day of the window, `YYYY-MM-DD`. */
|
|
6
|
+
start: string;
|
|
7
|
+
/** The first day after it, `YYYY-MM-DD`. */
|
|
8
|
+
end: string;
|
|
9
|
+
count: number;
|
|
10
|
+
/** Closed: its last day is behind the owner's today (or the deadline passed). */
|
|
11
|
+
closed: boolean;
|
|
12
|
+
state: WindowState;
|
|
13
|
+
}
|
|
14
|
+
export interface FrequencyStanding {
|
|
15
|
+
/** Oldest first. */
|
|
16
|
+
windows: FrequencyWindow[];
|
|
17
|
+
/** The window holding today, or null once the deadline has passed. */
|
|
18
|
+
current: FrequencyWindow | null;
|
|
19
|
+
/** The newest closed window, or null in the goal's first window. */
|
|
20
|
+
lastClosed: FrequencyWindow | null;
|
|
21
|
+
/** Closed windows met in a row, counted back from the newest; partial ones are skipped. */
|
|
22
|
+
streak: number;
|
|
23
|
+
/** How many closed windows met the count, and how many fell short. */
|
|
24
|
+
met: number;
|
|
25
|
+
short: number;
|
|
26
|
+
/** Occurrences still needed in the current window; null with no current window. */
|
|
27
|
+
toGo: number | null;
|
|
28
|
+
}
|
|
29
|
+
/** The day `days` after a local date, as a local date. */
|
|
30
|
+
export declare function addDays(date: string, days: number): string;
|
|
31
|
+
/** The first day of the window a local date falls in. Weeks start on Monday. */
|
|
32
|
+
export declare function windowStartOf(date: string, per: FrequencyPer): string;
|
|
33
|
+
/** The first day of the window after the one starting at `start`. */
|
|
34
|
+
export declare function nextWindowStart(start: string, per: FrequencyPer): string;
|
|
35
|
+
/** "3 times a week", "once a month", "twice a week". */
|
|
36
|
+
export declare function frequencyWords(target: Pick<FrequencyTarget, 'count' | 'per'>): string;
|
|
37
|
+
/**
|
|
38
|
+
* Every window of a frequency goal up to now, with its count and its state.
|
|
39
|
+
*
|
|
40
|
+
* `values` may be in any order and may reach outside the goal's life; only
|
|
41
|
+
* the ones from the day it was set to the deadline's day count.
|
|
42
|
+
*/
|
|
43
|
+
export declare function frequencyStandingOf(goal: Pick<Goal, 'target' | 'baseline' | 'deadline'>, values: ReadonlyArray<{
|
|
44
|
+
asOf: Date;
|
|
45
|
+
}>, now: Date, timezone: string): FrequencyStanding;
|
|
46
|
+
/**
|
|
47
|
+
* The verdict at the deadline: `met` when more closed windows met the count
|
|
48
|
+
* than fell short, `missed` otherwise. Partial windows count only when met.
|
|
49
|
+
*/
|
|
50
|
+
export declare function frequencySettles(standing: FrequencyStanding): 'met' | 'missed';
|
|
51
|
+
//# sourceMappingURL=frequency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frequency.d.ts","sourceRoot":"","sources":["../../src/goals/frequency.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEtE,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,oBAAoB;IACpB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,sEAAsE;IACtE,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,oEAAoE;IACpE,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,2FAA2F;IAC3F,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAeD,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAKrE;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAGxE;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,KAAK,CAAC,GAAG,MAAM,CAGrF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,EACpD,MAAM,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,EACrC,GAAG,EAAE,IAAI,EACT,QAAQ,EAAE,MAAM,GACf,iBAAiB,CAgDnB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,KAAK,GAAG,QAAQ,CAE9E"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frequency goals: "run three times a week" (docs/goals.md, "Frequency goals").
|
|
3
|
+
*
|
|
4
|
+
* The same series as a level goal, read another way: not where the number is,
|
|
5
|
+
* but how many values landed in each window. A value is one occurrence ("ran
|
|
6
|
+
* today" records 1), whatever number it carries.
|
|
7
|
+
*
|
|
8
|
+
* Windows are calendar weeks (Monday to Sunday) or calendar months, in the
|
|
9
|
+
* owner's timezone, from the one the goal was set in to the one holding the
|
|
10
|
+
* deadline. A value belongs to the window its `asOf` falls in on the owner's
|
|
11
|
+
* clock. Pure: dates, values and a zone — no pool, no clock of its own.
|
|
12
|
+
*
|
|
13
|
+
* Two windows are not whole: the one the goal was set in (it began before the
|
|
14
|
+
* goal did) and the one the deadline cuts short. Either may still be met; one
|
|
15
|
+
* that closes short is `partial`, never a gap — a goal set on a Friday is not
|
|
16
|
+
* a week missed.
|
|
17
|
+
*/
|
|
18
|
+
import { localDateString } from '../time.js';
|
|
19
|
+
function ymd(date) {
|
|
20
|
+
return date.split('-').map(Number);
|
|
21
|
+
}
|
|
22
|
+
function fmt(y, m, d) {
|
|
23
|
+
const at = new Date(Date.UTC(y, m - 1, d));
|
|
24
|
+
return `${String(at.getUTCFullYear()).padStart(4, '0')}-${String(at.getUTCMonth() + 1).padStart(2, '0')}-${String(at.getUTCDate()).padStart(2, '0')}`;
|
|
25
|
+
}
|
|
26
|
+
/** The day `days` after a local date, as a local date. */
|
|
27
|
+
export function addDays(date, days) {
|
|
28
|
+
const [y, m, d] = ymd(date);
|
|
29
|
+
return fmt(y, m, d + days);
|
|
30
|
+
}
|
|
31
|
+
/** The first day of the window a local date falls in. Weeks start on Monday. */
|
|
32
|
+
export function windowStartOf(date, per) {
|
|
33
|
+
const [y, m, d] = ymd(date);
|
|
34
|
+
if (per === 'month')
|
|
35
|
+
return fmt(y, m, 1);
|
|
36
|
+
const weekday = new Date(Date.UTC(y, m - 1, d)).getUTCDay(); // 0 is Sunday
|
|
37
|
+
return fmt(y, m, d - ((weekday + 6) % 7));
|
|
38
|
+
}
|
|
39
|
+
/** The first day of the window after the one starting at `start`. */
|
|
40
|
+
export function nextWindowStart(start, per) {
|
|
41
|
+
const [y, m, d] = ymd(start);
|
|
42
|
+
return per === 'month' ? fmt(y, m + 1, 1) : fmt(y, m, d + 7);
|
|
43
|
+
}
|
|
44
|
+
/** "3 times a week", "once a month", "twice a week". */
|
|
45
|
+
export function frequencyWords(target) {
|
|
46
|
+
const times = target.count === 1 ? 'once' : target.count === 2 ? 'twice' : `${target.count} times`;
|
|
47
|
+
return `${times} a ${target.per}`;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Every window of a frequency goal up to now, with its count and its state.
|
|
51
|
+
*
|
|
52
|
+
* `values` may be in any order and may reach outside the goal's life; only
|
|
53
|
+
* the ones from the day it was set to the deadline's day count.
|
|
54
|
+
*/
|
|
55
|
+
export function frequencyStandingOf(goal, values, now, timezone) {
|
|
56
|
+
if (goal.target.kind !== 'frequency')
|
|
57
|
+
throw new Error('frequencyStandingOf: not a frequency goal');
|
|
58
|
+
const { count: target, per } = goal.target;
|
|
59
|
+
const setDay = localDateString(goal.baseline.asOf, timezone);
|
|
60
|
+
const deadlineDay = localDateString(goal.deadline, timezone);
|
|
61
|
+
const today = localDateString(now, timezone);
|
|
62
|
+
const pastDeadline = now.getTime() >= goal.deadline.getTime();
|
|
63
|
+
const lastDay = pastDeadline || deadlineDay < today ? deadlineDay : today;
|
|
64
|
+
// How many values fell on each local day, inside the goal's life.
|
|
65
|
+
const perDay = new Map();
|
|
66
|
+
for (const value of values) {
|
|
67
|
+
const day = localDateString(value.asOf, timezone);
|
|
68
|
+
if (day < setDay || day > deadlineDay)
|
|
69
|
+
continue;
|
|
70
|
+
perDay.set(day, (perDay.get(day) ?? 0) + 1);
|
|
71
|
+
}
|
|
72
|
+
const windows = [];
|
|
73
|
+
for (let start = windowStartOf(setDay, per); start <= lastDay; start = nextWindowStart(start, per)) {
|
|
74
|
+
const end = nextWindowStart(start, per);
|
|
75
|
+
let count = 0;
|
|
76
|
+
for (const [day, n] of perDay)
|
|
77
|
+
if (day >= start && day < end)
|
|
78
|
+
count += n;
|
|
79
|
+
// Closed once its last day is behind today, or the deadline has passed.
|
|
80
|
+
const closed = pastDeadline || end <= today;
|
|
81
|
+
const whole = start >= setDay && addDays(end, -1) <= deadlineDay;
|
|
82
|
+
const state = count >= target ? 'met' : !closed ? 'open' : whole ? 'short' : 'partial';
|
|
83
|
+
windows.push({ start, end, count, closed, state });
|
|
84
|
+
}
|
|
85
|
+
const closedOnes = windows.filter((w) => w.closed);
|
|
86
|
+
let streak = 0;
|
|
87
|
+
for (let i = closedOnes.length - 1; i >= 0; i -= 1) {
|
|
88
|
+
const w = closedOnes[i];
|
|
89
|
+
if (w.state === 'partial')
|
|
90
|
+
continue;
|
|
91
|
+
if (w.state !== 'met')
|
|
92
|
+
break;
|
|
93
|
+
streak += 1;
|
|
94
|
+
}
|
|
95
|
+
const current = windows.find((w) => !w.closed) ?? null;
|
|
96
|
+
return {
|
|
97
|
+
windows,
|
|
98
|
+
current,
|
|
99
|
+
lastClosed: closedOnes[closedOnes.length - 1] ?? null,
|
|
100
|
+
streak,
|
|
101
|
+
met: closedOnes.filter((w) => w.state === 'met').length,
|
|
102
|
+
short: closedOnes.filter((w) => w.state === 'short').length,
|
|
103
|
+
toGo: current === null ? null : Math.max(0, target - current.count),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The verdict at the deadline: `met` when more closed windows met the count
|
|
108
|
+
* than fell short, `missed` otherwise. Partial windows count only when met.
|
|
109
|
+
*/
|
|
110
|
+
export function frequencySettles(standing) {
|
|
111
|
+
return standing.met > standing.short ? 'met' : 'missed';
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=frequency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frequency.js","sourceRoot":"","sources":["../../src/goals/frequency.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/goals/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/goals/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/goals/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/goals/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
|
|
@@ -14,9 +14,15 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import type { Goal, GoalTarget } from './types.js';
|
|
16
16
|
import type { MetricDirection } from '../metrics.js';
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* What the goal actually has to reach: a delta is a move from the baseline.
|
|
19
|
+
* For a frequency goal it is the count per window — the only number it has.
|
|
20
|
+
*/
|
|
18
21
|
export declare function targetValue(goal: Pick<Goal, 'target' | 'baseline'>): number;
|
|
19
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* A milestone on the target's own scale becomes a value to compare against.
|
|
24
|
+
* A frequency goal's milestones are streaks, and a streak is its own value.
|
|
25
|
+
*/
|
|
20
26
|
export declare function milestoneValue(goal: Pick<Goal, 'target' | 'baseline'>, milestone: number): number;
|
|
21
27
|
/**
|
|
22
28
|
* How far along, as a fraction: 0 at the baseline, 1 at the target.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/goals/math.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIrD
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/goals/math.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIrD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,MAAM,CAS3E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI9F;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,EACpD,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,IAAI,GACR,MAAM,GAAG,IAAI,CAIf;AAED,mDAAmD;AACnD,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAC5B,MAAM,EAAE,SAAS,KAAK,EAAE,GACvB,MAAM,GAAG,IAAI,CA2Bf;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC,EACvC,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,GAAG,IAAI,CAIhB;AAED,mEAAmE;AACnE,wBAAgB,OAAO,CACrB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC,EACvC,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAGT;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC,EACtD,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAKV;AAED,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAE9E"}
|
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
const WEEK_MS = 7 * 24 * 60 * 60_000;
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* What the goal actually has to reach: a delta is a move from the baseline.
|
|
4
|
+
* For a frequency goal it is the count per window — the only number it has.
|
|
5
|
+
*/
|
|
3
6
|
export function targetValue(goal) {
|
|
4
|
-
|
|
7
|
+
switch (goal.target.kind) {
|
|
8
|
+
case 'absolute':
|
|
9
|
+
return goal.target.value;
|
|
10
|
+
case 'delta':
|
|
11
|
+
return goal.baseline.value + goal.target.value;
|
|
12
|
+
case 'frequency':
|
|
13
|
+
return goal.target.count;
|
|
14
|
+
}
|
|
5
15
|
}
|
|
6
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* A milestone on the target's own scale becomes a value to compare against.
|
|
18
|
+
* A frequency goal's milestones are streaks, and a streak is its own value.
|
|
19
|
+
*/
|
|
7
20
|
export function milestoneValue(goal, milestone) {
|
|
8
|
-
return goal.target.kind === '
|
|
21
|
+
return goal.target.kind === 'delta' ? goal.baseline.value + milestone : milestone;
|
|
9
22
|
}
|
|
10
23
|
/**
|
|
11
24
|
* How far along, as a fraction: 0 at the baseline, 1 at the target.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/goals/math.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAErC
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/goals/math.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { Queryable } from '../owner.js';
|
|
2
|
+
import type { MetricDirection, MetricSource, MetricUnit, RegisteredMetric } from '../metrics.js';
|
|
3
|
+
import { type GoalCadence } from './types.js';
|
|
4
|
+
/** The namespace every owner metric's id is under: `owner.weight`. */
|
|
5
|
+
export declare const OWNER_METRIC_PREFIX = "owner.";
|
|
6
|
+
/** The plugin name an owner metric reports, and its `source` in `goal.metrics`. */
|
|
7
|
+
export declare const OWNER_SOURCE = "owner";
|
|
8
|
+
/** Kebab, lowercase, starting with a letter: `weight`, `resting-heart-rate`. */
|
|
9
|
+
export declare const OWNER_SLUG: RegExp;
|
|
10
|
+
/** The longest slug. It is a name, not a sentence. */
|
|
11
|
+
export declare const MAX_OWNER_SLUG = 40;
|
|
12
|
+
/** The longest label and unit label. */
|
|
13
|
+
export declare const MAX_OWNER_LABEL = 80;
|
|
14
|
+
export declare const MAX_OWNER_UNIT_LABEL = 16;
|
|
15
|
+
/** Where the owner said a value. */
|
|
16
|
+
export declare const OWNER_VALUE_SOURCES: readonly ["chat", "telegram", "api"];
|
|
17
|
+
export type OwnerValueSource = (typeof OWNER_VALUE_SOURCES)[number];
|
|
18
|
+
/** How far a value may move from the last one before it has to be confirmed. */
|
|
19
|
+
export declare const SANE_BAND = 0.5;
|
|
20
|
+
/** One cadence, in milliseconds. */
|
|
21
|
+
export declare function cadenceMs(cadence: GoalCadence): number;
|
|
22
|
+
export interface OwnerMetric {
|
|
23
|
+
slug: string;
|
|
24
|
+
/** `owner.<slug>`: what a goal's `metric` holds. */
|
|
25
|
+
id: string;
|
|
26
|
+
label: string;
|
|
27
|
+
unit: MetricUnit;
|
|
28
|
+
/** "lb", "kg": printed after the number. Null prints nothing. */
|
|
29
|
+
unitLabel: string | null;
|
|
30
|
+
direction: MetricDirection;
|
|
31
|
+
createdAt: Date;
|
|
32
|
+
}
|
|
33
|
+
export interface OwnerMetricValue {
|
|
34
|
+
id: string;
|
|
35
|
+
slug: string;
|
|
36
|
+
/** When buddi wrote it down. */
|
|
37
|
+
at: Date;
|
|
38
|
+
/** When it was true. */
|
|
39
|
+
asOf: Date;
|
|
40
|
+
value: number;
|
|
41
|
+
note: string | null;
|
|
42
|
+
source: OwnerValueSource;
|
|
43
|
+
conversationId: string | null;
|
|
44
|
+
}
|
|
45
|
+
/** `owner.<slug>`. */
|
|
46
|
+
export declare function ownerMetricId(slug: string): string;
|
|
47
|
+
/** The slug of an owner metric id, or null for any other id. */
|
|
48
|
+
export declare function ownerSlugOf(id: string): string | null;
|
|
49
|
+
/** Why a slug is refused, or null when it is a good one. */
|
|
50
|
+
export declare function refuseOwnerSlug(slug: string): string | null;
|
|
51
|
+
/** One owner metric by slug, or null. */
|
|
52
|
+
export declare function getOwnerMetric(db: Queryable, slug: string): Promise<OwnerMetric | null>;
|
|
53
|
+
/** Every owner metric, oldest first. A small table: one row per thing the owner measures. */
|
|
54
|
+
export declare function listOwnerMetrics(db: Queryable): Promise<OwnerMetric[]>;
|
|
55
|
+
export interface OwnerMetricInput {
|
|
56
|
+
slug: string;
|
|
57
|
+
label: string;
|
|
58
|
+
unit: MetricUnit;
|
|
59
|
+
unitLabel?: string | null;
|
|
60
|
+
direction: MetricDirection;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create an owner metric, or answer the one that already has this slug.
|
|
64
|
+
*
|
|
65
|
+
* `on conflict do nothing` and then a read, so two approvals naming the same
|
|
66
|
+
* new slug both end with the one row. Whether the existing row *agrees* with
|
|
67
|
+
* this definition is the caller's question — `goal.set` refuses a definition
|
|
68
|
+
* that disagrees before any card is drawn.
|
|
69
|
+
*/
|
|
70
|
+
export declare function createOwnerMetric(db: Queryable, input: OwnerMetricInput): Promise<OwnerMetric>;
|
|
71
|
+
export interface RecordOwnerValueInput {
|
|
72
|
+
slug: string;
|
|
73
|
+
value: number;
|
|
74
|
+
at: Date;
|
|
75
|
+
/** When it was true. Defaults to `at`. */
|
|
76
|
+
asOf?: Date;
|
|
77
|
+
note?: string | null;
|
|
78
|
+
source: OwnerValueSource;
|
|
79
|
+
conversationId?: string | null;
|
|
80
|
+
}
|
|
81
|
+
/** Append one value. Values are never rewritten: a correction is a newer value. */
|
|
82
|
+
export declare function recordOwnerValue(db: Queryable, input: RecordOwnerValueInput): Promise<OwnerMetricValue>;
|
|
83
|
+
/** The newest value by `as_of` (then by `at`), or null when the owner has said none. */
|
|
84
|
+
export declare function latestOwnerValue(db: Queryable, slug: string): Promise<OwnerMetricValue | null>;
|
|
85
|
+
/**
|
|
86
|
+
* Values, newest first, optionally only those true at or after `since` and
|
|
87
|
+
* before `until`. Capped: a screen or a window never asks for everything.
|
|
88
|
+
*/
|
|
89
|
+
export declare function ownerValues(db: Queryable, slug: string, opts?: {
|
|
90
|
+
since?: Date;
|
|
91
|
+
until?: Date;
|
|
92
|
+
limit?: number;
|
|
93
|
+
}): Promise<OwnerMetricValue[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Is this value believable next to the last one? Null when it is; otherwise the
|
|
96
|
+
* sentence the agent repeats to the owner, asking them to confirm.
|
|
97
|
+
*
|
|
98
|
+
* Two rules and nothing clever: more than 50 % away from the last value, or on
|
|
99
|
+
* the other side of zero. A last value of zero has no percentage, so only the
|
|
100
|
+
* sign rule applies to it; no last value at all is a first value, which is the
|
|
101
|
+
* baseline and always kept.
|
|
102
|
+
*/
|
|
103
|
+
export declare function refuseOutsideBand(last: number | null, value: number, format?: (n: number) => string): string | null;
|
|
104
|
+
/** An owner metric as the registry shape carries it, with the two words a plugin metric has not got. */
|
|
105
|
+
export type RegisteredOwnerMetric = RegisteredMetric & {
|
|
106
|
+
plugin: typeof OWNER_SOURCE;
|
|
107
|
+
label: string;
|
|
108
|
+
unitLabel: string | null;
|
|
109
|
+
};
|
|
110
|
+
/** The registry shape of one owner metric. Its `measure` reads the newest value. */
|
|
111
|
+
export declare function registeredOwnerMetric(metric: OwnerMetric): RegisteredOwnerMetric;
|
|
112
|
+
/** Is this registered metric one of the owner's? */
|
|
113
|
+
export declare function isOwnerMetric(metric: RegisteredMetric | undefined): metric is RegisteredOwnerMetric;
|
|
114
|
+
/** A metric source that also answers the owner's metrics, from a cache it refreshes. */
|
|
115
|
+
export interface OwnerMetricSource extends MetricSource {
|
|
116
|
+
/** Re-read `core.owner_metrics`. One `select`; call it at every entry point. */
|
|
117
|
+
refresh(db: Queryable): Promise<void>;
|
|
118
|
+
/** Put one metric in the cache now, as a write that just created it does. */
|
|
119
|
+
remember(metric: OwnerMetric): void;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The plugin metrics of `base`, and the owner's.
|
|
123
|
+
*
|
|
124
|
+
* An id under `owner.` is always answered from the owner's table, so a plugin
|
|
125
|
+
* can never shadow one — a plugin's metric ids start with its own name, and
|
|
126
|
+
* `owner` is not a plugin anybody can install alongside core's goals.
|
|
127
|
+
*/
|
|
128
|
+
export declare function ownerMetricSource(base: MetricSource): OwnerMetricSource;
|
|
129
|
+
//# sourceMappingURL=owner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner.d.ts","sourceRoot":"","sources":["../../src/goals/owner.ts"],"names":[],"mappings":"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"}
|