@aitne/daemon 0.1.3 → 0.1.4
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/dist/adapters/whatsapp-adapter.d.ts.map +1 -1
- package/dist/adapters/whatsapp-adapter.js +0 -1
- package/dist/adapters/whatsapp-adapter.js.map +1 -1
- package/dist/api/integration-route-gate.d.ts +15 -11
- package/dist/api/integration-route-gate.d.ts.map +1 -1
- package/dist/api/integration-route-gate.js +60 -23
- package/dist/api/integration-route-gate.js.map +1 -1
- package/dist/api/json-body.d.ts +22 -7
- package/dist/api/json-body.d.ts.map +1 -1
- package/dist/api/json-body.js +27 -8
- package/dist/api/json-body.js.map +1 -1
- package/dist/api/routes/agent.d.ts.map +1 -1
- package/dist/api/routes/agent.js +18 -0
- package/dist/api/routes/agent.js.map +1 -1
- package/dist/api/routes/backends.d.ts.map +1 -1
- package/dist/api/routes/backends.js +96 -1
- package/dist/api/routes/backends.js.map +1 -1
- package/dist/api/routes/books.js +1 -1
- package/dist/api/routes/books.js.map +1 -1
- package/dist/api/routes/context.d.ts.map +1 -1
- package/dist/api/routes/context.js +13 -1
- package/dist/api/routes/context.js.map +1 -1
- package/dist/api/routes/dashboard.d.ts.map +1 -1
- package/dist/api/routes/dashboard.js +75 -5
- package/dist/api/routes/dashboard.js.map +1 -1
- package/dist/api/routes/github.d.ts.map +1 -1
- package/dist/api/routes/github.js +38 -5
- package/dist/api/routes/github.js.map +1 -1
- package/dist/api/routes/integrations.d.ts +35 -6
- package/dist/api/routes/integrations.d.ts.map +1 -1
- package/dist/api/routes/integrations.js +191 -16
- package/dist/api/routes/integrations.js.map +1 -1
- package/dist/api/routes/mail.d.ts.map +1 -1
- package/dist/api/routes/mail.js +112 -46
- package/dist/api/routes/mail.js.map +1 -1
- package/dist/api/routes/observations.d.ts.map +1 -1
- package/dist/api/routes/observations.js +161 -8
- package/dist/api/routes/observations.js.map +1 -1
- package/dist/api/routes/setup-migrate.d.ts +9 -1
- package/dist/api/routes/setup-migrate.d.ts.map +1 -1
- package/dist/api/routes/setup-migrate.js +4 -2
- package/dist/api/routes/setup-migrate.js.map +1 -1
- package/dist/api/routes/skills.d.ts.map +1 -1
- package/dist/api/routes/skills.js +39 -1
- package/dist/api/routes/skills.js.map +1 -1
- package/dist/api/routes/voice.d.ts.map +1 -1
- package/dist/api/routes/voice.js +62 -4
- package/dist/api/routes/voice.js.map +1 -1
- package/dist/bootstrap/adapters.d.ts +109 -0
- package/dist/bootstrap/adapters.d.ts.map +1 -0
- package/dist/bootstrap/adapters.js +237 -0
- package/dist/bootstrap/adapters.js.map +1 -0
- package/dist/bootstrap/catchup.d.ts +23 -0
- package/dist/bootstrap/catchup.d.ts.map +1 -0
- package/dist/bootstrap/catchup.js +124 -0
- package/dist/bootstrap/catchup.js.map +1 -0
- package/dist/bootstrap/schedule-helpers.d.ts +18 -0
- package/dist/bootstrap/schedule-helpers.d.ts.map +1 -0
- package/dist/bootstrap/schedule-helpers.js +96 -0
- package/dist/bootstrap/schedule-helpers.js.map +1 -0
- package/dist/bootstrap/services.d.ts +60 -0
- package/dist/bootstrap/services.d.ts.map +1 -0
- package/dist/bootstrap/services.js +209 -0
- package/dist/bootstrap/services.js.map +1 -0
- package/dist/core/backends/backend-router.d.ts +23 -0
- package/dist/core/backends/backend-router.d.ts.map +1 -1
- package/dist/core/backends/backend-router.js +48 -3
- package/dist/core/backends/backend-router.js.map +1 -1
- package/dist/core/backends/claude-auth.d.ts +70 -0
- package/dist/core/backends/claude-auth.d.ts.map +1 -0
- package/dist/core/backends/claude-auth.js +198 -0
- package/dist/core/backends/claude-auth.js.map +1 -0
- package/dist/core/backends/claude-code-core.d.ts +47 -119
- package/dist/core/backends/claude-code-core.d.ts.map +1 -1
- package/dist/core/backends/claude-code-core.js +112 -1565
- package/dist/core/backends/claude-code-core.js.map +1 -1
- package/dist/core/backends/claude-delegated.d.ts +86 -0
- package/dist/core/backends/claude-delegated.d.ts.map +1 -0
- package/dist/core/backends/claude-delegated.js +801 -0
- package/dist/core/backends/claude-delegated.js.map +1 -0
- package/dist/core/backends/claude-errors.d.ts +39 -0
- package/dist/core/backends/claude-errors.d.ts.map +1 -0
- package/dist/core/backends/claude-errors.js +71 -0
- package/dist/core/backends/claude-errors.js.map +1 -0
- package/dist/core/backends/claude-probe.d.ts +103 -0
- package/dist/core/backends/claude-probe.d.ts.map +1 -0
- package/dist/core/backends/claude-probe.js +336 -0
- package/dist/core/backends/claude-probe.js.map +1 -0
- package/dist/core/backends/claude-tool-collection.d.ts +135 -0
- package/dist/core/backends/claude-tool-collection.d.ts.map +1 -0
- package/dist/core/backends/claude-tool-collection.js +831 -0
- package/dist/core/backends/claude-tool-collection.js.map +1 -0
- package/dist/core/backends/gemini-cli-core.d.ts +21 -0
- package/dist/core/backends/gemini-cli-core.d.ts.map +1 -1
- package/dist/core/backends/gemini-cli-core.js +84 -6
- package/dist/core/backends/gemini-cli-core.js.map +1 -1
- package/dist/core/backends/prompt-utils.d.ts +1 -0
- package/dist/core/backends/prompt-utils.d.ts.map +1 -1
- package/dist/core/backends/prompt-utils.js +60 -3
- package/dist/core/backends/prompt-utils.js.map +1 -1
- package/dist/core/context-builder.d.ts +36 -12
- package/dist/core/context-builder.d.ts.map +1 -1
- package/dist/core/context-builder.js +179 -89
- package/dist/core/context-builder.js.map +1 -1
- package/dist/core/dispatcher-date-utils.d.ts +49 -0
- package/dist/core/dispatcher-date-utils.d.ts.map +1 -0
- package/dist/core/dispatcher-date-utils.js +132 -0
- package/dist/core/dispatcher-date-utils.js.map +1 -0
- package/dist/core/dispatcher-error-handling.d.ts +159 -0
- package/dist/core/dispatcher-error-handling.d.ts.map +1 -0
- package/dist/core/dispatcher-error-handling.js +393 -0
- package/dist/core/dispatcher-error-handling.js.map +1 -0
- package/dist/core/dispatcher-hourly-check.d.ts +150 -0
- package/dist/core/dispatcher-hourly-check.d.ts.map +1 -0
- package/dist/core/dispatcher-hourly-check.js +665 -0
- package/dist/core/dispatcher-hourly-check.js.map +1 -0
- package/dist/core/dispatcher-message-handler.d.ts +170 -0
- package/dist/core/dispatcher-message-handler.d.ts.map +1 -0
- package/dist/core/dispatcher-message-handler.js +1054 -0
- package/dist/core/dispatcher-message-handler.js.map +1 -0
- package/dist/core/dispatcher-morning-routine.d.ts +169 -0
- package/dist/core/dispatcher-morning-routine.d.ts.map +1 -0
- package/dist/core/dispatcher-morning-routine.js +434 -0
- package/dist/core/dispatcher-morning-routine.js.map +1 -0
- package/dist/core/dispatcher-prompt.d.ts +107 -0
- package/dist/core/dispatcher-prompt.d.ts.map +1 -0
- package/dist/core/dispatcher-prompt.js +227 -0
- package/dist/core/dispatcher-prompt.js.map +1 -0
- package/dist/core/dispatcher-repository-helpers.d.ts +39 -0
- package/dist/core/dispatcher-repository-helpers.d.ts.map +1 -0
- package/dist/core/dispatcher-repository-helpers.js +86 -0
- package/dist/core/dispatcher-repository-helpers.js.map +1 -0
- package/dist/core/dispatcher-result-processor.d.ts +145 -0
- package/dist/core/dispatcher-result-processor.d.ts.map +1 -0
- package/dist/core/dispatcher-result-processor.js +414 -0
- package/dist/core/dispatcher-result-processor.js.map +1 -0
- package/dist/core/dispatcher-scheduled-tasks.d.ts +406 -0
- package/dist/core/dispatcher-scheduled-tasks.d.ts.map +1 -0
- package/dist/core/dispatcher-scheduled-tasks.js +998 -0
- package/dist/core/dispatcher-scheduled-tasks.js.map +1 -0
- package/dist/core/dispatcher-types.d.ts +296 -0
- package/dist/core/dispatcher-types.d.ts.map +1 -0
- package/dist/core/dispatcher-types.js +106 -0
- package/dist/core/dispatcher-types.js.map +1 -0
- package/dist/core/dispatcher.d.ts +86 -610
- package/dist/core/dispatcher.d.ts.map +1 -1
- package/dist/core/dispatcher.js +293 -3542
- package/dist/core/dispatcher.js.map +1 -1
- package/dist/core/integration-health.d.ts +18 -10
- package/dist/core/integration-health.d.ts.map +1 -1
- package/dist/core/integration-health.js +31 -1
- package/dist/core/integration-health.js.map +1 -1
- package/dist/core/integration-lifecycle.d.ts +65 -0
- package/dist/core/integration-lifecycle.d.ts.map +1 -1
- package/dist/core/integration-lifecycle.js +167 -16
- package/dist/core/integration-lifecycle.js.map +1 -1
- package/dist/core/integration-main-backend.d.ts +40 -0
- package/dist/core/integration-main-backend.d.ts.map +1 -1
- package/dist/core/integration-main-backend.js +89 -2
- package/dist/core/integration-main-backend.js.map +1 -1
- package/dist/core/management-md.d.ts +51 -17
- package/dist/core/management-md.d.ts.map +1 -1
- package/dist/core/management-md.js +233 -56
- package/dist/core/management-md.js.map +1 -1
- package/dist/core/output-language-policy.d.ts +74 -0
- package/dist/core/output-language-policy.d.ts.map +1 -0
- package/dist/core/output-language-policy.js +194 -0
- package/dist/core/output-language-policy.js.map +1 -0
- package/dist/core/prompts.d.ts +1 -0
- package/dist/core/prompts.d.ts.map +1 -1
- package/dist/core/prompts.js +121 -3
- package/dist/core/prompts.js.map +1 -1
- package/dist/core/repository-management-docs.d.ts +24 -0
- package/dist/core/repository-management-docs.d.ts.map +1 -1
- package/dist/core/repository-management-docs.js +210 -26
- package/dist/core/repository-management-docs.js.map +1 -1
- package/dist/core/routine-acquisition-plan.d.ts +131 -0
- package/dist/core/routine-acquisition-plan.d.ts.map +1 -0
- package/dist/core/routine-acquisition-plan.js +268 -0
- package/dist/core/routine-acquisition-plan.js.map +1 -0
- package/dist/core/routine-fetch-window-runner.d.ts +201 -0
- package/dist/core/routine-fetch-window-runner.d.ts.map +1 -0
- package/dist/core/routine-fetch-window-runner.js +661 -0
- package/dist/core/routine-fetch-window-runner.js.map +1 -0
- package/dist/core/routine-windows.d.ts +156 -0
- package/dist/core/routine-windows.d.ts.map +1 -0
- package/dist/core/routine-windows.js +330 -0
- package/dist/core/routine-windows.js.map +1 -0
- package/dist/core/skills-compiler.d.ts +11 -0
- package/dist/core/skills-compiler.d.ts.map +1 -1
- package/dist/core/skills-compiler.js +102 -13
- package/dist/core/skills-compiler.js.map +1 -1
- package/dist/core/skills-manifest.d.ts.map +1 -1
- package/dist/core/skills-manifest.js +26 -0
- package/dist/core/skills-manifest.js.map +1 -1
- package/dist/core/system-reset.d.ts.map +1 -1
- package/dist/core/system-reset.js +25 -2
- package/dist/core/system-reset.js.map +1 -1
- package/dist/db/observations.d.ts +45 -2
- package/dist/db/observations.d.ts.map +1 -1
- package/dist/db/observations.js +112 -14
- package/dist/db/observations.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +13 -25
- package/dist/db/schema.js.map +1 -1
- package/dist/index.js +83 -610
- package/dist/index.js.map +1 -1
- package/dist/observers/delegated-sync-worker.d.ts +45 -2
- package/dist/observers/delegated-sync-worker.d.ts.map +1 -1
- package/dist/observers/delegated-sync-worker.js +71 -21
- package/dist/observers/delegated-sync-worker.js.map +1 -1
- package/dist/observers/mail-poller.d.ts +12 -5
- package/dist/observers/mail-poller.d.ts.map +1 -1
- package/dist/observers/mail-poller.js +36 -14
- package/dist/observers/mail-poller.js.map +1 -1
- package/dist/observers/manager.d.ts +37 -5
- package/dist/observers/manager.d.ts.map +1 -1
- package/dist/observers/manager.js +28 -10
- package/dist/observers/manager.js.map +1 -1
- package/dist/services/delegated-backend-invoker.d.ts +1 -51
- package/dist/services/delegated-backend-invoker.d.ts.map +1 -1
- package/dist/services/delegated-backend-invoker.js +41 -480
- package/dist/services/delegated-backend-invoker.js.map +1 -1
- package/dist/services/delegated-invoker-audit.d.ts +94 -0
- package/dist/services/delegated-invoker-audit.d.ts.map +1 -0
- package/dist/services/delegated-invoker-audit.js +238 -0
- package/dist/services/delegated-invoker-audit.js.map +1 -0
- package/dist/services/delegated-invoker-cache-hits.d.ts +34 -0
- package/dist/services/delegated-invoker-cache-hits.d.ts.map +1 -0
- package/dist/services/delegated-invoker-cache-hits.js +104 -0
- package/dist/services/delegated-invoker-cache-hits.js.map +1 -0
- package/dist/services/delegated-invoker-janitors.d.ts +28 -0
- package/dist/services/delegated-invoker-janitors.d.ts.map +1 -0
- package/dist/services/delegated-invoker-janitors.js +104 -0
- package/dist/services/delegated-invoker-janitors.js.map +1 -0
- package/dist/services/delegated-invoker-utils.d.ts +42 -0
- package/dist/services/delegated-invoker-utils.d.ts.map +1 -0
- package/dist/services/delegated-invoker-utils.js +100 -0
- package/dist/services/delegated-invoker-utils.js.map +1 -0
- package/dist/services/delegated-task-runtime.d.ts +1 -1
- package/dist/services/delegated-task-runtime.js +1 -1
- package/dist/services/integrations/snapshot-partitions.d.ts +5 -0
- package/dist/services/integrations/snapshot-partitions.d.ts.map +1 -1
- package/dist/services/integrations/snapshot-partitions.js +12 -0
- package/dist/services/integrations/snapshot-partitions.js.map +1 -1
- package/dist/services/voice/transcriber-impl.d.ts.map +1 -1
- package/dist/services/voice/transcriber-impl.js +7 -8
- package/dist/services/voice/transcriber-impl.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegated-invoker-cache-hits.d.ts","sourceRoot":"","sources":["../../src/services/delegated-invoker-cache-hits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAGhF,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,gCAAgC,CAAC;AAExC;;;;;;;;;;;;;;GAcG;AAEH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE;IACJ,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,EAAE,uBAAuB,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB,GACA,gBAAgB,CA0ClB;AAED,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE;IACJ,MAAM,EAAE,eAAe,CAAC;IACxB,GAAG,EAAE,uBAAuB,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB,GACA,eAAe,CAyCjB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { hashTaskArgs } from "./delegated-task-runtime.js";
|
|
2
|
+
import { recordCacheHitAuditRow } from "./delegated-invoker-audit.js";
|
|
3
|
+
import { zeroCost } from "./delegated-invoker-utils.js";
|
|
4
|
+
/**
|
|
5
|
+
* §13 Phase 3.3 — cache-hit response builders. Both functions:
|
|
6
|
+
* 1. Compute the task / schema (and for /run: allowedTools) hashes used
|
|
7
|
+
* by the dashboard's detail filter.
|
|
8
|
+
* 2. Write a single `'success'`, `cost_source='cache'` audit row via
|
|
9
|
+
* {@link recordCacheHitAuditRow}.
|
|
10
|
+
* 3. Synthesize the public {@link TaskInvokeResult} / {@link RunInvokeResult}
|
|
11
|
+
* from the cache entry — `cost: zeroCost()` because the cached
|
|
12
|
+
* subprocess was the one that spent.
|
|
13
|
+
*
|
|
14
|
+
* Pure pattern A: no instance state, no closures. Cache hits are looked
|
|
15
|
+
* up before the concurrency permit so they do not consume a slot and do
|
|
16
|
+
* not increment the per-day quota counter (the quota counts subprocess
|
|
17
|
+
* invocations, not cache returns).
|
|
18
|
+
*/
|
|
19
|
+
export function buildCacheHitTaskResult(db, args) {
|
|
20
|
+
const nowIso = new Date(args.now()).toISOString();
|
|
21
|
+
const taskHash = hashTaskArgs(args.params.task);
|
|
22
|
+
const schemaHash = hashTaskArgs(args.params.outputSchema);
|
|
23
|
+
recordCacheHitAuditRow(db, {
|
|
24
|
+
actionType: "delegated_task.exec",
|
|
25
|
+
backendId: args.backendId,
|
|
26
|
+
modelId: args.modelId,
|
|
27
|
+
...(args.params.parentEventId !== undefined
|
|
28
|
+
? { parentEventId: args.params.parentEventId }
|
|
29
|
+
: {}),
|
|
30
|
+
...(args.params.parentProcessKey !== undefined
|
|
31
|
+
? { parentProcessKey: args.params.parentProcessKey }
|
|
32
|
+
: {}),
|
|
33
|
+
timestamp: nowIso,
|
|
34
|
+
toolCallCount: args.hit.trace.length,
|
|
35
|
+
detail: {
|
|
36
|
+
integrationKey: args.params.integrationKey,
|
|
37
|
+
delegatedBackend: args.backendId,
|
|
38
|
+
taskHash,
|
|
39
|
+
schemaHash,
|
|
40
|
+
cacheHit: true,
|
|
41
|
+
toolCallCount: args.hit.trace.length,
|
|
42
|
+
retried: false,
|
|
43
|
+
// §11.2 — cache hits are gated on the original outcome being
|
|
44
|
+
// non-confirmation (see Phase 3.3 cache guard); record this
|
|
45
|
+
// explicitly so the metric aggregator's schema stays uniform
|
|
46
|
+
// across live + cache-hit rows.
|
|
47
|
+
needsConfirmation: false,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
ok: true,
|
|
52
|
+
result: args.hit.result,
|
|
53
|
+
needsConfirmation: false,
|
|
54
|
+
confirmationPlan: null,
|
|
55
|
+
cost: zeroCost(),
|
|
56
|
+
trace: args.hit.trace,
|
|
57
|
+
backendId: args.backendId,
|
|
58
|
+
modelId: args.modelId,
|
|
59
|
+
retried: false,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function buildCacheHitRunResult(db, args) {
|
|
63
|
+
const nowIso = new Date(args.now()).toISOString();
|
|
64
|
+
const taskHash = hashTaskArgs(args.params.task);
|
|
65
|
+
const schemaHash = hashTaskArgs(args.params.outputSchema);
|
|
66
|
+
const allowedToolsHash = hashTaskArgs(args.params.allowedTools);
|
|
67
|
+
recordCacheHitAuditRow(db, {
|
|
68
|
+
actionType: "delegated_task.run",
|
|
69
|
+
backendId: args.backendId,
|
|
70
|
+
modelId: args.modelId,
|
|
71
|
+
...(args.params.parentEventId !== undefined
|
|
72
|
+
? { parentEventId: args.params.parentEventId }
|
|
73
|
+
: {}),
|
|
74
|
+
...(args.params.parentProcessKey !== undefined
|
|
75
|
+
? { parentProcessKey: args.params.parentProcessKey }
|
|
76
|
+
: {}),
|
|
77
|
+
timestamp: nowIso,
|
|
78
|
+
toolCallCount: args.hit.trace.length,
|
|
79
|
+
detail: {
|
|
80
|
+
delegatedBackend: args.backendId,
|
|
81
|
+
taskHash,
|
|
82
|
+
schemaHash,
|
|
83
|
+
allowedToolsHash,
|
|
84
|
+
allowedToolsCount: args.params.allowedTools.length,
|
|
85
|
+
cacheHit: true,
|
|
86
|
+
toolCallCount: args.hit.trace.length,
|
|
87
|
+
retried: false,
|
|
88
|
+
// §11.2 — see /exec equivalent.
|
|
89
|
+
needsConfirmation: false,
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
return {
|
|
93
|
+
ok: true,
|
|
94
|
+
result: args.hit.result,
|
|
95
|
+
needsConfirmation: false,
|
|
96
|
+
confirmationPlan: null,
|
|
97
|
+
cost: zeroCost(),
|
|
98
|
+
trace: args.hit.trace,
|
|
99
|
+
backendId: args.backendId,
|
|
100
|
+
modelId: args.modelId,
|
|
101
|
+
retried: false,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=delegated-invoker-cache-hits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegated-invoker-cache-hits.js","sourceRoot":"","sources":["../../src/services/delegated-invoker-cache-hits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
/**
|
|
3
|
+
* DELEGATED-TASK-MODE-DESIGN.md §11.1 crash safety — boot-time janitor
|
|
4
|
+
* that flips orphaned `delegated_task.exec` rows older than `maxAgeMs`
|
|
5
|
+
* (default 5 min) from `result='in_progress'` to `result='failed'` with
|
|
6
|
+
* `error='subprocess_orphaned'`. Without this, a daemon crash mid-task
|
|
7
|
+
* leaves the row in flight forever and poisons the dashboard's "in-flight
|
|
8
|
+
* task" counter.
|
|
9
|
+
*
|
|
10
|
+
* Returns the number of rows updated.
|
|
11
|
+
*/
|
|
12
|
+
export declare function runDelegatedTaskOrphanJanitor(db: Database.Database, options?: {
|
|
13
|
+
now?: () => number;
|
|
14
|
+
maxAgeMs?: number;
|
|
15
|
+
}): number;
|
|
16
|
+
/**
|
|
17
|
+
* Boot-time janitor — scans the sessions root for orphan `proxy-*` dirs
|
|
18
|
+
* older than the configured threshold and removes them. Covers the SIGKILL
|
|
19
|
+
* mid-call case the per-call `finally` cannot. Safe to call before any
|
|
20
|
+
* invocations have happened.
|
|
21
|
+
*
|
|
22
|
+
* Returns the number of directories removed (for logging at startup).
|
|
23
|
+
*/
|
|
24
|
+
export declare function runProxyTempdirJanitor(dataDir: string, options?: {
|
|
25
|
+
now?: () => number;
|
|
26
|
+
maxAgeMs?: number;
|
|
27
|
+
}): number;
|
|
28
|
+
//# sourceMappingURL=delegated-invoker-janitors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegated-invoker-janitors.d.ts","sourceRoot":"","sources":["../../src/services/delegated-invoker-janitors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAoB3C;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACtD,MAAM,CA4BR;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACtD,MAAM,CAoCR"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { existsSync, readdirSync, rmSync, statSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { createLogger } from "../logging.js";
|
|
4
|
+
import { DELEGATED_PROXY_DEFAULTS } from "./delegated-proxy-config.js";
|
|
5
|
+
/**
|
|
6
|
+
* Boot-time janitors for the delegated proxy + task subsystem.
|
|
7
|
+
*
|
|
8
|
+
* - {@link runDelegatedTaskOrphanJanitor} closes orphan `delegated_task.*`
|
|
9
|
+
* rows whose owning subprocess died before the daemon could complete
|
|
10
|
+
* them (SIGKILL / crash mid-task). Without it, in-flight rows
|
|
11
|
+
* accumulate forever and skew the dashboard's in-flight counter.
|
|
12
|
+
* - {@link runProxyTempdirJanitor} sweeps stale `proxy-*` session dirs
|
|
13
|
+
* under `<dataDir>/agent-sessions/`. Covers the SIGKILL window the
|
|
14
|
+
* per-call `finally` cannot reach.
|
|
15
|
+
*
|
|
16
|
+
* Both are pure top-level exports — no invoker instance state.
|
|
17
|
+
*/
|
|
18
|
+
const logger = createLogger("delegated-proxy-janitors");
|
|
19
|
+
/**
|
|
20
|
+
* DELEGATED-TASK-MODE-DESIGN.md §11.1 crash safety — boot-time janitor
|
|
21
|
+
* that flips orphaned `delegated_task.exec` rows older than `maxAgeMs`
|
|
22
|
+
* (default 5 min) from `result='in_progress'` to `result='failed'` with
|
|
23
|
+
* `error='subprocess_orphaned'`. Without this, a daemon crash mid-task
|
|
24
|
+
* leaves the row in flight forever and poisons the dashboard's "in-flight
|
|
25
|
+
* task" counter.
|
|
26
|
+
*
|
|
27
|
+
* Returns the number of rows updated.
|
|
28
|
+
*/
|
|
29
|
+
export function runDelegatedTaskOrphanJanitor(db, options = {}) {
|
|
30
|
+
const maxAgeMs = options.maxAgeMs ?? DELEGATED_PROXY_DEFAULTS.janitorMaxAgeMs;
|
|
31
|
+
const cutoffMs = (options.now?.() ?? Date.now()) - maxAgeMs;
|
|
32
|
+
const cutoffIso = new Date(cutoffMs).toISOString();
|
|
33
|
+
try {
|
|
34
|
+
const result = db
|
|
35
|
+
.prepare(`UPDATE agent_actions SET
|
|
36
|
+
result = 'failed',
|
|
37
|
+
error = 'subprocess_orphaned',
|
|
38
|
+
completed_at = datetime('now')
|
|
39
|
+
WHERE action_type IN ('delegated_task.exec', 'delegated_task.run', 'delegated_task.tool_step')
|
|
40
|
+
AND result = 'in_progress'
|
|
41
|
+
AND started_at < datetime(?)`)
|
|
42
|
+
.run(cutoffIso);
|
|
43
|
+
if (result.changes > 0) {
|
|
44
|
+
logger.info({ changes: result.changes }, "delegated task janitor: closed orphaned in-progress rows");
|
|
45
|
+
}
|
|
46
|
+
return result.changes;
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
logger.warn({ err }, "delegated task janitor: SQL update failed");
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Boot-time janitor — scans the sessions root for orphan `proxy-*` dirs
|
|
55
|
+
* older than the configured threshold and removes them. Covers the SIGKILL
|
|
56
|
+
* mid-call case the per-call `finally` cannot. Safe to call before any
|
|
57
|
+
* invocations have happened.
|
|
58
|
+
*
|
|
59
|
+
* Returns the number of directories removed (for logging at startup).
|
|
60
|
+
*/
|
|
61
|
+
export function runProxyTempdirJanitor(dataDir, options = {}) {
|
|
62
|
+
const now = options.now ?? Date.now;
|
|
63
|
+
const maxAgeMs = options.maxAgeMs ?? DELEGATED_PROXY_DEFAULTS.janitorMaxAgeMs;
|
|
64
|
+
const root = join(dataDir, "agent-sessions");
|
|
65
|
+
if (!existsSync(root))
|
|
66
|
+
return 0;
|
|
67
|
+
let removed = 0;
|
|
68
|
+
let entries;
|
|
69
|
+
try {
|
|
70
|
+
entries = readdirSync(root);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
logger.warn({ err, root }, "proxy janitor: readdir failed");
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
for (const entry of entries) {
|
|
77
|
+
if (!entry.startsWith(DELEGATED_PROXY_DEFAULTS.tempdirPrefix))
|
|
78
|
+
continue;
|
|
79
|
+
const path = join(root, entry);
|
|
80
|
+
let stat;
|
|
81
|
+
try {
|
|
82
|
+
stat = statSync(path);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (!stat.isDirectory())
|
|
88
|
+
continue;
|
|
89
|
+
if (now() - stat.mtimeMs < maxAgeMs)
|
|
90
|
+
continue;
|
|
91
|
+
try {
|
|
92
|
+
rmSync(path, { recursive: true, force: true });
|
|
93
|
+
removed++;
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
logger.warn({ err, path }, "proxy janitor: rm failed");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (removed > 0) {
|
|
100
|
+
logger.info({ removed }, "proxy janitor: removed orphan tempdirs");
|
|
101
|
+
}
|
|
102
|
+
return removed;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=delegated-invoker-janitors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegated-invoker-janitors.js","sourceRoot":"","sources":["../../src/services/delegated-invoker-janitors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { DelegatedToolCost } from "../core/agent-core.js";
|
|
2
|
+
/**
|
|
3
|
+
* Stateless utilities for {@link DelegatedBackendInvoker}: a tiny FS reader,
|
|
4
|
+
* a stable arg hash for `agent_actions.detail`, two `DelegatedToolCost`
|
|
5
|
+
* builders, a code-fence stripper, and the synthetic one-shot lease used
|
|
6
|
+
* when the session-dir pool is disabled.
|
|
7
|
+
*
|
|
8
|
+
* Nothing here reads invoker instance state — these are exported as plain
|
|
9
|
+
* functions so the parent class can delegate without preserving a `this`
|
|
10
|
+
* binding. `LegacyOneShotLease` keeps the same `release()` / `discard()`
|
|
11
|
+
* shape as `SessionPoolLease` so the task() / run() loop can hold either
|
|
12
|
+
* kind through one variable.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readFileSyncIfExists(path: string): string | null;
|
|
15
|
+
export declare function hashArgs(args: unknown): string;
|
|
16
|
+
export declare function zeroCost(): DelegatedToolCost;
|
|
17
|
+
export declare function mergeCost(a: DelegatedToolCost, b: DelegatedToolCost): DelegatedToolCost;
|
|
18
|
+
/**
|
|
19
|
+
* Fence stripper shared with `delegated-task-runtime.ts` (which keeps a
|
|
20
|
+
* private copy for `extractAndValidateResult`'s schema-violation recovery
|
|
21
|
+
* path — see runtime.ts:572). A four-line helper hand-synced rather than
|
|
22
|
+
* imported from either direction so neither file widens its dependency
|
|
23
|
+
* surface for the sake of one regex.
|
|
24
|
+
*/
|
|
25
|
+
export declare function stripCodeFences(input: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* §13 Phase 3.2 — synthetic lease used when pooling is disabled. Implements
|
|
28
|
+
* the same `release()` / `discard()` shape as `SessionPoolLease` so the
|
|
29
|
+
* task() / run() loop doesn't have to branch on whether pooling is active.
|
|
30
|
+
* Both methods clean up the tempdir (no TTL semantics — there's no pool
|
|
31
|
+
* to return to).
|
|
32
|
+
*/
|
|
33
|
+
export declare class LegacyOneShotLease {
|
|
34
|
+
readonly sessionDir: string;
|
|
35
|
+
private readonly cleanup;
|
|
36
|
+
readonly fromPool = false;
|
|
37
|
+
private released;
|
|
38
|
+
constructor(sessionDir: string, cleanup: () => void);
|
|
39
|
+
release(): void;
|
|
40
|
+
discard(): void;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=delegated-invoker-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegated-invoker-utils.d.ts","sourceRoot":"","sources":["../../src/services/delegated-invoker-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D;;;;;;;;;;;GAWG;AAEH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAU9C;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAU5C;AAED,wBAAgB,SAAS,CACvB,CAAC,EAAE,iBAAiB,EACpB,CAAC,EAAE,iBAAiB,GACnB,iBAAiB,CAUnB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAI3B,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,QAAQ,CAAC,QAAQ,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;gBAEd,UAAU,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,IAAI;IAEtC,OAAO,IAAI,IAAI;IAKf,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
/**
|
|
4
|
+
* Stateless utilities for {@link DelegatedBackendInvoker}: a tiny FS reader,
|
|
5
|
+
* a stable arg hash for `agent_actions.detail`, two `DelegatedToolCost`
|
|
6
|
+
* builders, a code-fence stripper, and the synthetic one-shot lease used
|
|
7
|
+
* when the session-dir pool is disabled.
|
|
8
|
+
*
|
|
9
|
+
* Nothing here reads invoker instance state — these are exported as plain
|
|
10
|
+
* functions so the parent class can delegate without preserving a `this`
|
|
11
|
+
* binding. `LegacyOneShotLease` keeps the same `release()` / `discard()`
|
|
12
|
+
* shape as `SessionPoolLease` so the task() / run() loop can hold either
|
|
13
|
+
* kind through one variable.
|
|
14
|
+
*/
|
|
15
|
+
export function readFileSyncIfExists(path) {
|
|
16
|
+
if (!existsSync(path))
|
|
17
|
+
return null;
|
|
18
|
+
return readFileSync(path, "utf-8");
|
|
19
|
+
}
|
|
20
|
+
export function hashArgs(args) {
|
|
21
|
+
try {
|
|
22
|
+
const serialized = JSON.stringify(args ?? null);
|
|
23
|
+
return createHash("sha256")
|
|
24
|
+
.update(serialized)
|
|
25
|
+
.digest("hex")
|
|
26
|
+
.slice(0, 16);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return "unhashable";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function zeroCost() {
|
|
33
|
+
return {
|
|
34
|
+
tokensInput: 0,
|
|
35
|
+
tokensOutput: 0,
|
|
36
|
+
cacheCreationTokens: 0,
|
|
37
|
+
cacheReadTokens: 0,
|
|
38
|
+
costUsd: 0,
|
|
39
|
+
durationMs: 0,
|
|
40
|
+
numTurns: 0,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function mergeCost(a, b) {
|
|
44
|
+
return {
|
|
45
|
+
tokensInput: a.tokensInput + b.tokensInput,
|
|
46
|
+
tokensOutput: a.tokensOutput + b.tokensOutput,
|
|
47
|
+
cacheCreationTokens: a.cacheCreationTokens + b.cacheCreationTokens,
|
|
48
|
+
cacheReadTokens: a.cacheReadTokens + b.cacheReadTokens,
|
|
49
|
+
costUsd: a.costUsd + b.costUsd,
|
|
50
|
+
durationMs: a.durationMs + b.durationMs,
|
|
51
|
+
numTurns: a.numTurns + b.numTurns,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Fence stripper shared with `delegated-task-runtime.ts` (which keeps a
|
|
56
|
+
* private copy for `extractAndValidateResult`'s schema-violation recovery
|
|
57
|
+
* path — see runtime.ts:572). A four-line helper hand-synced rather than
|
|
58
|
+
* imported from either direction so neither file widens its dependency
|
|
59
|
+
* surface for the sake of one regex.
|
|
60
|
+
*/
|
|
61
|
+
export function stripCodeFences(input) {
|
|
62
|
+
let s = input.trim();
|
|
63
|
+
const fenceRe = /^```(?:json|JSON|jsonc|JSONC)?\s*\r?\n([\s\S]*?)\r?\n```$/;
|
|
64
|
+
const m = s.match(fenceRe);
|
|
65
|
+
if (m)
|
|
66
|
+
return m[1];
|
|
67
|
+
s = s.replace(/^```(?:json|JSON|jsonc|JSONC)?\s*\r?\n/, "");
|
|
68
|
+
s = s.replace(/\r?\n```\s*$/, "");
|
|
69
|
+
return s;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* §13 Phase 3.2 — synthetic lease used when pooling is disabled. Implements
|
|
73
|
+
* the same `release()` / `discard()` shape as `SessionPoolLease` so the
|
|
74
|
+
* task() / run() loop doesn't have to branch on whether pooling is active.
|
|
75
|
+
* Both methods clean up the tempdir (no TTL semantics — there's no pool
|
|
76
|
+
* to return to).
|
|
77
|
+
*/
|
|
78
|
+
export class LegacyOneShotLease {
|
|
79
|
+
sessionDir;
|
|
80
|
+
cleanup;
|
|
81
|
+
fromPool = false;
|
|
82
|
+
released = false;
|
|
83
|
+
constructor(sessionDir, cleanup) {
|
|
84
|
+
this.sessionDir = sessionDir;
|
|
85
|
+
this.cleanup = cleanup;
|
|
86
|
+
}
|
|
87
|
+
release() {
|
|
88
|
+
if (this.released)
|
|
89
|
+
return;
|
|
90
|
+
this.released = true;
|
|
91
|
+
this.cleanup();
|
|
92
|
+
}
|
|
93
|
+
discard() {
|
|
94
|
+
if (this.released)
|
|
95
|
+
return;
|
|
96
|
+
this.released = true;
|
|
97
|
+
this.cleanup();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=delegated-invoker-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegated-invoker-utils.js","sourceRoot":"","sources":["../../src/services/delegated-invoker-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -276,7 +276,7 @@ export declare function sumTraceCosts(trace: readonly DelegatedTaskToolStep[]):
|
|
|
276
276
|
};
|
|
277
277
|
/**
|
|
278
278
|
* §11.1 — hash tool args for telemetry without leaking their contents.
|
|
279
|
-
* Mirrors `delegated-
|
|
279
|
+
* Mirrors `delegated-invoker-utils.ts:hashArgs`.
|
|
280
280
|
*/
|
|
281
281
|
export declare function hashTaskArgs(args: unknown): string;
|
|
282
282
|
/**
|
|
@@ -489,7 +489,7 @@ export function sumTraceCosts(trace) {
|
|
|
489
489
|
}
|
|
490
490
|
/**
|
|
491
491
|
* §11.1 — hash tool args for telemetry without leaking their contents.
|
|
492
|
-
* Mirrors `delegated-
|
|
492
|
+
* Mirrors `delegated-invoker-utils.ts:hashArgs`.
|
|
493
493
|
*/
|
|
494
494
|
export function hashTaskArgs(args) {
|
|
495
495
|
try {
|
|
@@ -10,6 +10,11 @@ import type { IntegrationKey, IntegrationMode } from "@aitne/shared";
|
|
|
10
10
|
* - `delegated`: writers are the DelegatedSyncWorker cadences. Calendar
|
|
11
11
|
* uses `primary:imminent` + `primary:24h`; Gmail uses `inbox:7d`;
|
|
12
12
|
* Notion uses `recently_updated`.
|
|
13
|
+
* - `native`: writers are the agent's in-turn `POST /api/observations`
|
|
14
|
+
* calls (INTEGRATION_NATIVE_MODE_DESIGN.md §8.3). They land directly
|
|
15
|
+
* in the `observations` table rather than `integration_snapshots`, so
|
|
16
|
+
* this row is empty — `partitionsToPurge` will already drop the
|
|
17
|
+
* prior-mode partitions when flipping out of direct/delegated.
|
|
13
18
|
* - `disabled`: no writer; partitions are empty.
|
|
14
19
|
*
|
|
15
20
|
* The map is the single source of truth for the §3.3 stale-partition
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-partitions.d.ts","sourceRoot":"","sources":["../../../src/services/integrations/snapshot-partitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAKrE
|
|
1
|
+
{"version":3,"file":"snapshot-partitions.d.ts","sourceRoot":"","sources":["../../../src/services/integrations/snapshot-partitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAKrE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,uCAAuC,EAAE,QAAQ,CAC5D,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAgD7E,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,eAAe,GACpB,MAAM,EAAE,CASV;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,eAAe,GACpB,MAAM,EAAE,CAgCV"}
|
|
@@ -10,6 +10,11 @@ const logger = createLogger("snapshot-partitions");
|
|
|
10
10
|
* - `delegated`: writers are the DelegatedSyncWorker cadences. Calendar
|
|
11
11
|
* uses `primary:imminent` + `primary:24h`; Gmail uses `inbox:7d`;
|
|
12
12
|
* Notion uses `recently_updated`.
|
|
13
|
+
* - `native`: writers are the agent's in-turn `POST /api/observations`
|
|
14
|
+
* calls (INTEGRATION_NATIVE_MODE_DESIGN.md §8.3). They land directly
|
|
15
|
+
* in the `observations` table rather than `integration_snapshots`, so
|
|
16
|
+
* this row is empty — `partitionsToPurge` will already drop the
|
|
17
|
+
* prior-mode partitions when flipping out of direct/delegated.
|
|
13
18
|
* - `disabled`: no writer; partitions are empty.
|
|
14
19
|
*
|
|
15
20
|
* The map is the single source of truth for the §3.3 stale-partition
|
|
@@ -21,26 +26,31 @@ export const INTEGRATION_SNAPSHOT_PARTITIONS_BY_MODE = {
|
|
|
21
26
|
google_calendar: {
|
|
22
27
|
direct: ["primary:14d"],
|
|
23
28
|
delegated: ["primary:imminent", "primary:24h"],
|
|
29
|
+
native: [],
|
|
24
30
|
disabled: [],
|
|
25
31
|
},
|
|
26
32
|
gmail: {
|
|
27
33
|
direct: [],
|
|
28
34
|
delegated: ["inbox:7d"],
|
|
35
|
+
native: [],
|
|
29
36
|
disabled: [],
|
|
30
37
|
},
|
|
31
38
|
notion: {
|
|
32
39
|
direct: [],
|
|
33
40
|
delegated: ["recently_updated"],
|
|
41
|
+
native: [],
|
|
34
42
|
disabled: [],
|
|
35
43
|
},
|
|
36
44
|
git: {
|
|
37
45
|
direct: [],
|
|
38
46
|
delegated: [],
|
|
47
|
+
native: [],
|
|
39
48
|
disabled: [],
|
|
40
49
|
},
|
|
41
50
|
github: {
|
|
42
51
|
direct: [],
|
|
43
52
|
delegated: [],
|
|
53
|
+
native: [],
|
|
44
54
|
disabled: [],
|
|
45
55
|
},
|
|
46
56
|
// SETUP-FLOW-REDESIGN-PLAN §6.1 — Outlook integrations are direct-only
|
|
@@ -50,11 +60,13 @@ export const INTEGRATION_SNAPSHOT_PARTITIONS_BY_MODE = {
|
|
|
50
60
|
outlook_mail: {
|
|
51
61
|
direct: [],
|
|
52
62
|
delegated: [],
|
|
63
|
+
native: [],
|
|
53
64
|
disabled: [],
|
|
54
65
|
},
|
|
55
66
|
outlook_calendar: {
|
|
56
67
|
direct: [],
|
|
57
68
|
delegated: [],
|
|
69
|
+
native: [],
|
|
58
70
|
disabled: [],
|
|
59
71
|
},
|
|
60
72
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-partitions.js","sourceRoot":"","sources":["../../../src/services/integrations/snapshot-partitions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAEnD
|
|
1
|
+
{"version":3,"file":"snapshot-partitions.js","sourceRoot":"","sources":["../../../src/services/integrations/snapshot-partitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcriber-impl.d.ts","sourceRoot":"","sources":["../../../src/services/voice/transcriber-impl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EAEZ,cAAc,EACf,MAAM,kBAAkB,CAAC;AAmC1B;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"transcriber-impl.d.ts","sourceRoot":"","sources":["../../../src/services/voice/transcriber-impl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EAEZ,cAAc,EACf,MAAM,kBAAkB,CAAC;AAmC1B;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,cAgFjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YA+DnC,CAAC"}
|
|
@@ -66,14 +66,13 @@ export const defaultLoadPipeline = async ({ model, modelDir, onProgress, }) => {
|
|
|
66
66
|
const pipelineOptions = {};
|
|
67
67
|
// `onnx-community/whisper-large-v3-turbo`'s default fp32 encoder is a tiny
|
|
68
68
|
// 439 KB stub that references a 2.55 GB sibling `.onnx_data` external-data
|
|
69
|
-
// file
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
// object form passed straight through to transformers.js).
|
|
69
|
+
// file (~3 GB total). The `_q4` variants are self-contained single ONNX
|
|
70
|
+
// files (encoder ~425 MB, decoder ~334 MB → ~760 MB total, matches the
|
|
71
|
+
// dashboard's "~800 MB" claim), so we pick them by default for download-
|
|
72
|
+
// size reasons. Operators pointing `PA_VOICE_TRANSCRIPTION_MODEL` at a
|
|
73
|
+
// different repo can pin the dtype themselves via
|
|
74
|
+
// `PA_VOICE_TRANSCRIPTION_DTYPE` (string or JSON object form passed
|
|
75
|
+
// straight through to transformers.js).
|
|
77
76
|
const dtype = resolveDtype(model);
|
|
78
77
|
if (dtype !== undefined) {
|
|
79
78
|
pipelineOptions.dtype = dtype;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcriber-impl.js","sourceRoot":"","sources":["../../../src/services/voice/transcriber-impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAO3C,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC;;;;;;;;;;GAUG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IACrD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAA2B,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,kEAAkE;gBAClE,6DAA6D;gBAC7D,2DAA2D;YAC7D,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,KAAK,uCAAuC;QAAE,OAAO,IAAI,CAAC;IACnE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmB,KAAK,EAAE,EACxD,KAAK,EACL,QAAQ,EACR,UAAU,GACX,EAAE,EAAE;IACH,8DAA8D;IAC9D,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,2BAAqC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,4CAA6C,GAAa,CAAC,OAAO,EAAE,CACrE,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,GAAG,EAAE,QAAQ,KAAK,UAAU,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,qEAAqE;IACrE,wEAAwE;IACxE,0EAA0E;IAC1E,qEAAqE;IACrE,sEAAsE;IACtE,uEAAuE;IACvE,yEAAyE;IACzE,mCAAmC;IACnC,IAAI,GAAG,EAAE,GAAG,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,GAAG,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC;IACpC,CAAC;IACD,8DAA8D;IAC9D,MAAM,eAAe,GAAwB,EAAE,CAAC;IAChD,2EAA2E;IAC3E,2EAA2E;IAC3E,
|
|
1
|
+
{"version":3,"file":"transcriber-impl.js","sourceRoot":"","sources":["../../../src/services/voice/transcriber-impl.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aitne/daemon",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Aitne daemon — long-running TypeScript service that hosts the event bus, scheduler, observers, safety layer, and HTTP API. Consumed by the `aitne` CLI; not intended for standalone use.",
|
|
5
5
|
"homepage": "https://github.com/Aitne-sh/Aitne#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"telegraf": "^4.16.3",
|
|
63
63
|
"tsdav": "^2.1.8",
|
|
64
64
|
"zod": "^4.3.6",
|
|
65
|
-
"@aitne/shared": "0.1.
|
|
65
|
+
"@aitne/shared": "0.1.4"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@types/better-sqlite3": "^7.6.13",
|