@wrongstack/core 0.289.0 → 0.291.1
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/boot.d.ts.map +1 -1
- package/dist/chronicle/domain-adapter.d.ts.map +1 -1
- package/dist/chronicle/index.d.ts +1 -1
- package/dist/chronicle/index.d.ts.map +1 -1
- package/dist/chronicle/index.js +964 -245
- package/dist/chronicle/index.js.map +3 -3
- package/dist/chronicle/journal.d.ts +35 -3
- package/dist/chronicle/journal.d.ts.map +1 -1
- package/dist/chronicle/query.d.ts +8 -5
- package/dist/chronicle/query.d.ts.map +1 -1
- package/dist/chronicle/tool-adapter.d.ts.map +1 -1
- package/dist/coordination/agent-subagent-runner.d.ts +6 -0
- package/dist/coordination/agent-subagent-runner.d.ts.map +1 -1
- package/dist/coordination/agents/phase6-domain.d.ts.map +1 -1
- package/dist/coordination/brain.d.ts +2 -1
- package/dist/coordination/brain.d.ts.map +1 -1
- package/dist/coordination/collab-debug.d.ts +0 -9
- package/dist/coordination/collab-debug.d.ts.map +1 -1
- package/dist/coordination/coordinator/error-classifier.d.ts.map +1 -1
- package/dist/coordination/dep-watcher.d.ts +2 -1
- package/dist/coordination/dep-watcher.d.ts.map +1 -1
- package/dist/coordination/director/director-collab.d.ts +1 -1
- package/dist/coordination/director/director-collab.d.ts.map +1 -1
- package/dist/coordination/director-tools.d.ts.map +1 -1
- package/dist/coordination/director.d.ts +19 -1
- package/dist/coordination/director.d.ts.map +1 -1
- package/dist/coordination/fleet-event-validation.d.ts +0 -7
- package/dist/coordination/fleet-event-validation.d.ts.map +1 -1
- package/dist/coordination/fleet-spawn.d.ts.map +1 -1
- package/dist/coordination/fleet-supervisor.d.ts +1 -1
- package/dist/coordination/fleet-supervisor.d.ts.map +1 -1
- package/dist/coordination/fleet.d.ts +0 -44
- package/dist/coordination/fleet.d.ts.map +1 -1
- package/dist/coordination/index.d.ts +2 -2
- package/dist/coordination/index.d.ts.map +1 -1
- package/dist/coordination/index.js +733 -111
- package/dist/coordination/index.js.map +4 -4
- package/dist/coordination/knowledge-graph.d.ts +2 -1
- package/dist/coordination/knowledge-graph.d.ts.map +1 -1
- package/dist/coordination/large-answer-store.d.ts +0 -6
- package/dist/coordination/large-answer-store.d.ts.map +1 -1
- package/dist/coordination/mail-tools.d.ts.map +1 -1
- package/dist/coordination/mailbox-http-router.d.ts.map +1 -1
- package/dist/coordination/mailbox-message-codec.d.ts +35 -0
- package/dist/coordination/mailbox-message-codec.d.ts.map +1 -1
- package/dist/coordination/mailbox-tool.d.ts +1 -1
- package/dist/coordination/mailbox-tool.d.ts.map +1 -1
- package/dist/coordination/mailbox-types.d.ts +151 -0
- package/dist/coordination/mailbox-types.d.ts.map +1 -1
- package/dist/coordination/provider-status-tracker.d.ts +27 -2
- package/dist/coordination/provider-status-tracker.d.ts.map +1 -1
- package/dist/coordination/subagent-budget.d.ts +2 -1
- package/dist/coordination/subagent-budget.d.ts.map +1 -1
- package/dist/core/agent-response.d.ts +2 -1
- package/dist/core/agent-response.d.ts.map +1 -1
- package/dist/core/agent-tools.d.ts.map +1 -1
- package/dist/core/context.d.ts +51 -0
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/fallback-model.d.ts +1 -1
- package/dist/core/fallback-model.d.ts.map +1 -1
- package/dist/core/fallback-profile-manager.d.ts +1 -1
- package/dist/core/fallback-profile-manager.d.ts.map +1 -1
- package/dist/core/fleet-pulse.d.ts +2 -1
- package/dist/core/fleet-pulse.d.ts.map +1 -1
- package/dist/core/iteration-limit.d.ts +2 -1
- package/dist/core/iteration-limit.d.ts.map +1 -1
- package/dist/core/mailbox-loop.d.ts +11 -1
- package/dist/core/mailbox-loop.d.ts.map +1 -1
- package/dist/core/model-availability-calendar.d.ts +27 -0
- package/dist/core/model-availability-calendar.d.ts.map +1 -0
- package/dist/core/system-prompt-builder.d.ts +2 -1
- package/dist/core/system-prompt-builder.d.ts.map +1 -1
- package/dist/defaults/index.js +1459 -560
- package/dist/defaults/index.js.map +4 -4
- package/dist/execution/auto-compaction-middleware.d.ts +3 -2
- package/dist/execution/auto-compaction-middleware.d.ts.map +1 -1
- package/dist/execution/enhance-recovery.d.ts +8 -0
- package/dist/execution/enhance-recovery.d.ts.map +1 -1
- package/dist/execution/error-handler.d.ts +2 -2
- package/dist/execution/error-handler.d.ts.map +1 -1
- package/dist/execution/index.js +643 -134
- package/dist/execution/index.js.map +4 -4
- package/dist/execution/intelligent-compactor.d.ts +0 -16
- package/dist/execution/intelligent-compactor.d.ts.map +1 -1
- package/dist/execution/one-shot-llm.d.ts.map +1 -1
- package/dist/execution/retry-policy.d.ts +0 -13
- package/dist/execution/retry-policy.d.ts.map +1 -1
- package/dist/execution/skill-loader.d.ts.map +1 -1
- package/dist/execution/tool-executor.d.ts.map +1 -1
- package/dist/hq/auth-store.d.ts.map +1 -1
- package/dist/hq/index.js +39 -1
- package/dist/hq/index.js.map +3 -3
- package/dist/index.d.ts +32 -30
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22263 -19999
- package/dist/index.js.map +4 -4
- package/dist/infrastructure/index.js +59 -5
- package/dist/infrastructure/index.js.map +2 -2
- package/dist/kernel/events/agent-events.d.ts +2 -0
- package/dist/kernel/events/agent-events.d.ts.map +1 -1
- package/dist/kernel/events/file-events.d.ts +46 -0
- package/dist/kernel/events/file-events.d.ts.map +1 -1
- package/dist/kernel/events/memory-events.d.ts +9 -0
- package/dist/kernel/events/memory-events.d.ts.map +1 -1
- package/dist/kernel/events/provider-events.d.ts +2 -1
- package/dist/kernel/events/provider-events.d.ts.map +1 -1
- package/dist/kernel/events/tool-events.d.ts +25 -0
- package/dist/kernel/events/tool-events.d.ts.map +1 -1
- package/dist/mailbox-attach.d.ts.map +1 -1
- package/dist/plugins/auto-review-plugin.d.ts +10 -0
- package/dist/plugins/auto-review-plugin.d.ts.map +1 -1
- package/dist/plugins/chimera-plugin.d.ts +5 -0
- package/dist/plugins/chimera-plugin.d.ts.map +1 -1
- package/dist/security/index.d.ts +1 -0
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +317 -9
- package/dist/security/index.js.map +4 -4
- package/dist/security/kanban-boundary.d.ts +10 -0
- package/dist/security/kanban-boundary.d.ts.map +1 -0
- package/dist/security/permission-policy.d.ts +8 -1
- package/dist/security/permission-policy.d.ts.map +1 -1
- package/dist/storage/config-loader.d.ts +15 -0
- package/dist/storage/config-loader.d.ts.map +1 -1
- package/dist/storage/index.d.ts +2 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +627 -428
- package/dist/storage/index.js.map +4 -4
- package/dist/storage/memory-consolidator.d.ts +49 -4
- package/dist/storage/memory-consolidator.d.ts.map +1 -1
- package/dist/storage/memory-graph-backend.d.ts +11 -0
- package/dist/storage/memory-graph-backend.d.ts.map +1 -1
- package/dist/storage/provider-config-watcher.d.ts +17 -0
- package/dist/storage/provider-config-watcher.d.ts.map +1 -1
- package/dist/storage/session-event-bridge.d.ts +2 -2
- package/dist/storage/session-event-bridge.d.ts.map +1 -1
- package/dist/tools/fallback-manage-tools.d.ts.map +1 -1
- package/dist/tools/index.js +166 -26
- package/dist/tools/index.js.map +3 -3
- package/dist/types/config.d.ts +12 -4
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/file-event-record.d.ts +68 -0
- package/dist/types/file-event-record.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +13 -8
- package/dist/types/index.js.map +3 -3
- package/dist/types/permission.d.ts +38 -0
- package/dist/types/permission.d.ts.map +1 -1
- package/dist/types/provider.d.ts +1 -1
- package/dist/types/provider.d.ts.map +1 -1
- package/dist/types/session.d.ts +27 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/tool-executor.d.ts +2 -0
- package/dist/types/tool-executor.d.ts.map +1 -1
- package/dist/utils/config-backup.d.ts +20 -0
- package/dist/utils/config-backup.d.ts.map +1 -0
- package/dist/utils/index.d.ts +12 -11
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +436 -290
- package/dist/utils/index.js.map +4 -4
- package/dist/utils/message-invariants.d.ts +12 -0
- package/dist/utils/message-invariants.d.ts.map +1 -1
- package/dist/utils/safe-json.d.ts +1 -1
- package/dist/utils/safe-json.d.ts.map +1 -1
- package/dist/utils/term.d.ts +6 -0
- package/dist/utils/term.d.ts.map +1 -1
- package/dist/utils/tool-wire-compact.d.ts +9 -0
- package/dist/utils/tool-wire-compact.d.ts.map +1 -1
- package/dist/utils/wstack-paths.d.ts +21 -1
- package/dist/utils/wstack-paths.d.ts.map +1 -1
- package/instructions/agents/ios.md +113 -0
- package/instructions/llm/memory-consolidator.md +4 -12
- package/instructions/system.md +4 -1
- package/package.json +3 -3
- package/skills/auto-review/SKILL.md +176 -0
- package/skills/mnemosyne/SKILL.md +156 -0
- package/skills/mnemosyne/instructions/agent-prompt.md +200 -0
|
@@ -2,12 +2,47 @@ import type { AfterRunHook, AgentExtension } from '../extension/extension-points
|
|
|
2
2
|
import type { MemoryStore } from '../types/memory.js';
|
|
3
3
|
import type { Provider } from '../types/provider.js';
|
|
4
4
|
import type { OneShotOrchestrator } from '../execution/one-shot-llm.js';
|
|
5
|
+
/**
|
|
6
|
+
* Minimal interface for writing to Super Memory without importing
|
|
7
|
+
* @wrongstack/super-memory (core cannot depend on super-memory).
|
|
8
|
+
* Tools like the consolidator use this to route adds through
|
|
9
|
+
* rememberSuper rather than the legacy MemoryStore.remember(),
|
|
10
|
+
* making them visible to searchSuper/turn-middleware.
|
|
11
|
+
*/
|
|
12
|
+
type ConsolidatorSuperMemoryKind = 'fact' | 'decision' | 'convention' | 'preference' | 'anti_pattern' | 'file_note';
|
|
13
|
+
export interface ConsolidatorSuperMemory {
|
|
14
|
+
rememberSuper(input: {
|
|
15
|
+
text: string;
|
|
16
|
+
scope?: string | undefined;
|
|
17
|
+
kind?: ConsolidatorSuperMemoryKind | undefined;
|
|
18
|
+
tags?: string[] | undefined;
|
|
19
|
+
priority?: string | undefined;
|
|
20
|
+
importance?: number | undefined;
|
|
21
|
+
confidence?: number | undefined;
|
|
22
|
+
sources?: Array<{
|
|
23
|
+
type: string;
|
|
24
|
+
sessionId?: string | undefined;
|
|
25
|
+
}> | undefined;
|
|
26
|
+
}): Promise<unknown>;
|
|
27
|
+
listSuper?(statuses?: Array<'active'>): Promise<unknown[]>;
|
|
28
|
+
searchSuper?(query: string, opts?: {
|
|
29
|
+
limit?: number;
|
|
30
|
+
scope?: 'project';
|
|
31
|
+
includeStatuses?: Array<'active'>;
|
|
32
|
+
}): Promise<unknown[]>;
|
|
33
|
+
}
|
|
5
34
|
export interface ConsolidationOp {
|
|
6
|
-
|
|
7
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Add-only by design. The consolidator runs unattended after every
|
|
37
|
+
* successful session, so LLM-issued delete/edit ops used to give an
|
|
38
|
+
* unsupervised model a substring-matched deletion path over the whole
|
|
39
|
+
* memory store (see the 2026-07 mass-deletion postmortem). Removals and
|
|
40
|
+
* corrections belong to explicit review flows (memory_delete /
|
|
41
|
+
* memory_update / ReviewQueue), never to this hook.
|
|
42
|
+
*/
|
|
43
|
+
action: 'add';
|
|
44
|
+
/** The fact to remember. */
|
|
8
45
|
text?: string | undefined;
|
|
9
|
-
/** For edit/delete: the query to match existing entries. */
|
|
10
|
-
query?: string | undefined;
|
|
11
46
|
/** Memory type for categorization. */
|
|
12
47
|
type?: string | undefined;
|
|
13
48
|
/** Tags for grouping. */
|
|
@@ -17,6 +52,14 @@ export interface ConsolidationOp {
|
|
|
17
52
|
}
|
|
18
53
|
export interface MemoryConsolidatorOptions {
|
|
19
54
|
memoryStore: MemoryStore;
|
|
55
|
+
/**
|
|
56
|
+
* Optional Super Memory writer. When provided, the consolidator routes
|
|
57
|
+
* adds through `rememberSuper()` and reads existing entries for dedup
|
|
58
|
+
* context via `searchSuper()` instead of the legacy `MemoryStore`.
|
|
59
|
+
* This makes consolidator-sourced memories visible to the turn-middleware
|
|
60
|
+
* (searchSuper, retrieveForPath) which only queries Super Memory.
|
|
61
|
+
*/
|
|
62
|
+
superMemory?: ConsolidatorSuperMemory | undefined;
|
|
20
63
|
/**
|
|
21
64
|
* Provider used for the consolidation LLM call. Uses the session's
|
|
22
65
|
* provider by default.
|
|
@@ -47,6 +90,7 @@ export declare class SessionMemoryConsolidator implements AgentExtension {
|
|
|
47
90
|
name: string;
|
|
48
91
|
owner: string;
|
|
49
92
|
private readonly memoryStore;
|
|
93
|
+
private readonly superMemory?;
|
|
50
94
|
private readonly provider?;
|
|
51
95
|
private readonly model?;
|
|
52
96
|
private readonly minIterations;
|
|
@@ -55,4 +99,5 @@ export declare class SessionMemoryConsolidator implements AgentExtension {
|
|
|
55
99
|
constructor(opts: MemoryConsolidatorOptions);
|
|
56
100
|
afterRun: AfterRunHook;
|
|
57
101
|
}
|
|
102
|
+
export {};
|
|
58
103
|
//# sourceMappingURL=memory-consolidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-consolidator.d.ts","sourceRoot":"","sources":["../../src/storage/memory-consolidator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAQxE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"memory-consolidator.d.ts","sourceRoot":"","sources":["../../src/storage/memory-consolidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,17 @@ export interface GraphMemoryBackendOptions extends FileMemoryBackendOptions {
|
|
|
27
27
|
graphPath?: string | undefined;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
+
* @deprecated Migrate to `SuperMemoryStore` from the Super Memory package,
|
|
31
|
+
* which provides the same `MemoryBackend` operations (remember, forget, search,
|
|
32
|
+
* consolidate, list, clear) plus graph support via its integrated
|
|
33
|
+
* `SuperMemoryGraph` implementation.
|
|
34
|
+
* This legacy backend stores entries as markdown bullets in a flat file with a
|
|
35
|
+
* separate graph.json; SuperMemoryStore stores structured records in JSONL (or
|
|
36
|
+
* SQLite) with a dedicated edges.jsonl supporting 12 relation types (supersedes,
|
|
37
|
+
* contradicts, about_file, etc.) and mutation-locked append.
|
|
38
|
+
* Migration is NOT drop-in — migrate to SuperMemoryStore and use its
|
|
39
|
+
* integrated graph features instead.
|
|
40
|
+
*
|
|
30
41
|
* Graph-based memory backend that tracks relationships between entries.
|
|
31
42
|
* Builds on top of FileMemoryBackend — entries are still persisted as
|
|
32
43
|
* markdown bullets, but the graph layer adds:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-graph-backend.d.ts","sourceRoot":"","sources":["../../src/storage/memory-graph-backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,KAAK,wBAAwB,EAAqB,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;CAChD;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAID,MAAM,WAAW,yBAA0B,SAAQ,wBAAwB;IACzE;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED
|
|
1
|
+
{"version":3,"file":"memory-graph-backend.d.ts","sourceRoot":"","sources":["../../src/storage/memory-graph-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,12 @@ import type { SecretVault } from '../types/secret-vault.js';
|
|
|
8
8
|
*/
|
|
9
9
|
export interface ProviderConfigSnapshot {
|
|
10
10
|
providers: Record<string, ProviderConfig>;
|
|
11
|
+
/** True when the config file actually had a `providers` key. The watcher
|
|
12
|
+
* callback uses this to avoid clearing in-memory providers during hot-reload
|
|
13
|
+
* when the profile config file simply doesn't define any — without this
|
|
14
|
+
* guard, reading a profile config that has no `providers` key would set
|
|
15
|
+
* `appConfig.providers = {}` and wipe all configured providers. */
|
|
16
|
+
snapshotHasProviders: boolean;
|
|
11
17
|
apiKey?: string;
|
|
12
18
|
baseUrl?: string;
|
|
13
19
|
/** Display language (Config.uiLocale), surfaced so a cross-process change
|
|
@@ -21,6 +27,7 @@ export interface ProviderConfigSnapshot {
|
|
|
21
27
|
favoriteModelsOnly?: boolean;
|
|
22
28
|
modelMatrix?: Record<string, unknown>;
|
|
23
29
|
fallbackAuto?: boolean;
|
|
30
|
+
modelAvailabilitySchedule?: import('../core/model-availability-calendar.js').ModelBlackoutRule[];
|
|
24
31
|
}
|
|
25
32
|
export interface WatchProviderConfigOptions {
|
|
26
33
|
/** Surface non-fatal read/parse/decrypt issues. */
|
|
@@ -28,6 +35,16 @@ export interface WatchProviderConfigOptions {
|
|
|
28
35
|
/** Coalesce bursts of fs events (default 200ms). */
|
|
29
36
|
debounceMs?: number;
|
|
30
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Read and decrypt the credential slice of a config file. Returns `undefined`
|
|
40
|
+
* when the file is missing or unparseable (the `warn` callback carries the
|
|
41
|
+
* detail); never throws for routine I/O.
|
|
42
|
+
*
|
|
43
|
+
* Exported so multi-layer watchers (e.g. `provider-runtime-setup.ts`) can
|
|
44
|
+
* re-read every active config layer when any layer changes, then merge them
|
|
45
|
+
* with correct precedence before applying.
|
|
46
|
+
*/
|
|
47
|
+
export declare function readProviderSnapshot(configPath: string, vault: SecretVault, warn?: (msg: string) => void): Promise<ProviderConfigSnapshot | undefined>;
|
|
31
48
|
/**
|
|
32
49
|
* Watch `configPath` for credential changes and invoke `onChange` with a
|
|
33
50
|
* freshly-decrypted snapshot whenever the `providers`/`apiKey`/`baseUrl` slice
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-config-watcher.d.ts","sourceRoot":"","sources":["../../src/storage/provider-config-watcher.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;0EACsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;yEACqE;IACrE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"provider-config-watcher.d.ts","sourceRoot":"","sources":["../../src/storage/provider-config-watcher.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C;;;;wEAIoE;IACpE,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;0EACsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;yEACqE;IACrE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB,CAAC,EAAE,OAAO,wCAAwC,EAAE,iBAAiB,EAAE,CAAC;CAClG;AAED,MAAM,WAAW,0BAA0B;IACzC,mDAAmD;IACnD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC3B,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAiD7C;AAmBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,EACpD,IAAI,GAAE,0BAA+B,GACpC;IAAE,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAgEvB"}
|
|
@@ -45,12 +45,12 @@ export interface SessionEventBridge {
|
|
|
45
45
|
allows(type: SessionEvent['type']): boolean;
|
|
46
46
|
}
|
|
47
47
|
/** Core events that are always written regardless of auditLevel. */
|
|
48
|
-
declare const CORE_RECONSTRUCT_EVENTS: Set<"agent_error" | "agent_spawned" | "agent_stopped" | "checkpoint" | "compaction" | "context_snapshot" | "error" | "file_observation" | "file_snapshot" | "in_flight_end" | "in_flight_start" | "llm_request" | "llm_response" | "message_appended" | "message_truncated" | "message_updated" | "messages_replaced" | "mode_changed" | "provider_error" | "provider_retry" | "rewound" | "session_end" | "session_forked" | "session_resumed" | "session_start" | "side_effect" | "skill_activated" | "skill_deactivated" | "spec_analyzed" | "spec_parsed" | "task_completed" | "task_created" | "task_failed" | "task_updated" | "tool_call_end" | "tool_call_start" | "tool_progress" | "tool_result" | "tool_use" | "user_input">;
|
|
48
|
+
declare const CORE_RECONSTRUCT_EVENTS: Set<"agent_error" | "agent_spawned" | "agent_stopped" | "checkpoint" | "compaction" | "context_snapshot" | "error" | "file_event" | "file_observation" | "file_snapshot" | "in_flight_end" | "in_flight_start" | "llm_request" | "llm_response" | "message_appended" | "message_truncated" | "message_updated" | "messages_replaced" | "mode_changed" | "provider_error" | "provider_retry" | "rewound" | "session_end" | "session_forked" | "session_resumed" | "session_start" | "side_effect" | "skill_activated" | "skill_deactivated" | "spec_analyzed" | "spec_parsed" | "task_completed" | "task_created" | "task_failed" | "task_updated" | "tool_call_end" | "tool_call_start" | "tool_progress" | "tool_result" | "tool_use" | "user_input">;
|
|
49
49
|
/**
|
|
50
50
|
* Events that are considered "standard" audit detail.
|
|
51
51
|
* These are lightweight and high-value for forensics.
|
|
52
52
|
*/
|
|
53
|
-
declare const STANDARD_AUDIT_EVENTS: Set<"agent_error" | "agent_spawned" | "agent_stopped" | "checkpoint" | "compaction" | "context_snapshot" | "error" | "file_observation" | "file_snapshot" | "in_flight_end" | "in_flight_start" | "llm_request" | "llm_response" | "message_appended" | "message_truncated" | "message_updated" | "messages_replaced" | "mode_changed" | "provider_error" | "provider_retry" | "rewound" | "session_end" | "session_forked" | "session_resumed" | "session_start" | "side_effect" | "skill_activated" | "skill_deactivated" | "spec_analyzed" | "spec_parsed" | "task_completed" | "task_created" | "task_failed" | "task_updated" | "tool_call_end" | "tool_call_start" | "tool_progress" | "tool_result" | "tool_use" | "user_input">;
|
|
53
|
+
declare const STANDARD_AUDIT_EVENTS: Set<"agent_error" | "agent_spawned" | "agent_stopped" | "checkpoint" | "compaction" | "context_snapshot" | "error" | "file_event" | "file_observation" | "file_snapshot" | "in_flight_end" | "in_flight_start" | "llm_request" | "llm_response" | "message_appended" | "message_truncated" | "message_updated" | "messages_replaced" | "mode_changed" | "provider_error" | "provider_retry" | "rewound" | "session_end" | "session_forked" | "session_resumed" | "session_start" | "side_effect" | "skill_activated" | "skill_deactivated" | "spec_analyzed" | "spec_parsed" | "task_completed" | "task_created" | "task_failed" | "task_updated" | "tool_call_end" | "tool_call_start" | "tool_progress" | "tool_result" | "tool_use" | "user_input">;
|
|
54
54
|
/**
|
|
55
55
|
* Create a safe, audit-level-aware bridge around a SessionWriter.
|
|
56
56
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-event-bridge.d.ts","sourceRoot":"","sources":["../../src/storage/session-event-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAEzD;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,kGAAkG;IAClG,YAAY,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;CACxD;AAED,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,8DAA8D;IAC9D,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAE3B;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAEvC,oFAAoF;IACpF,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;CAC7C;AAED,oEAAoE;AACpE,QAAA,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"session-event-bridge.d.ts","sourceRoot":"","sources":["../../src/storage/session-event-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAEzD;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,kGAAkG;IAClG,YAAY,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;CACxD;AAED,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,8DAA8D;IAC9D,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAE3B;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAEvC,oFAAoF;IACpF,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;CAC7C;AAED,oEAAoE;AACpE,QAAA,MAAM,uBAAuB,wtBAkB3B,CAAC;AAEH;;;GAGG;AACH,QAAA,MAAM,qBAAqB,wtBAyBzB,CAAC;AA4BH;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,GAAG,CAAC,MAAM,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,EACnF,KAAK,GAAE,UAAuB,EAC9B,OAAO,GAAE,yBAA8B,GACtC,kBAAkB,CAyFpB;AAED,oEAAoE;AACpE,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAA;CAAE,GAAG,IAAI,GAC7E,UAAU,CAMZ;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,CAAC,EAAE;IACJ,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QACpC,QAAQ,CAAC,EAAE;YACT,YAAY,CAAC,EAAE;gBAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;aAAE,CAAC;SACpD,CAAC;KACH,CAAC;CACH,GAAG,IAAI,GACP;IACD,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE;QACR,YAAY,EAAE;YAAE,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;KACtC,CAAC;CACH,CAeA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback-manage-tools.d.ts","sourceRoot":"","sources":["../../src/tools/fallback-manage-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAc,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAOzD,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAC3D,eAAO,MAAM,+BAA+B,0BAA0B,CAAC;AACvE,eAAO,MAAM,iCAAiC,4BAA4B,CAAC;AAC3E,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAEjE,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB;;;;OAIG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACjE,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"fallback-manage-tools.d.ts","sourceRoot":"","sources":["../../src/tools/fallback-manage-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAc,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAOzD,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAC3D,eAAO,MAAM,+BAA+B,0BAA0B,CAAC;AACvE,eAAO,MAAM,iCAAiC,4BAA4B,CAAC;AAC3E,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAEjE,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB;;;;OAIG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACjE,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAmoBD,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AA4L3D,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AA6L7D,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AA6K7D,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AA2QjE;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,EAAE,CAWjF"}
|
package/dist/tools/index.js
CHANGED
|
@@ -2011,6 +2011,84 @@ function validateCouncilToolInput(input) {
|
|
|
2011
2011
|
return errors;
|
|
2012
2012
|
}
|
|
2013
2013
|
|
|
2014
|
+
// src/core/model-availability-calendar.ts
|
|
2015
|
+
function logicalCalendarTarget(providerId, model) {
|
|
2016
|
+
if (providerId !== "omniroute") return { providerId, model };
|
|
2017
|
+
const slash = model.indexOf("/");
|
|
2018
|
+
return slash > 0 && slash < model.length - 1 ? { providerId: model.slice(0, slash), model: model.slice(slash + 1) } : { providerId, model };
|
|
2019
|
+
}
|
|
2020
|
+
var WEEKDAYS = {
|
|
2021
|
+
Sun: 0,
|
|
2022
|
+
Mon: 1,
|
|
2023
|
+
Tue: 2,
|
|
2024
|
+
Wed: 3,
|
|
2025
|
+
Thu: 4,
|
|
2026
|
+
Fri: 5,
|
|
2027
|
+
Sat: 6
|
|
2028
|
+
};
|
|
2029
|
+
function minuteOfDay(value) {
|
|
2030
|
+
const match = /^(\d{2}):(\d{2})$/.exec(value);
|
|
2031
|
+
if (!match) return void 0;
|
|
2032
|
+
const hour = Number(match[1]);
|
|
2033
|
+
const minute = Number(match[2]);
|
|
2034
|
+
if (hour > 23 || minute > 59) return void 0;
|
|
2035
|
+
return hour * 60 + minute;
|
|
2036
|
+
}
|
|
2037
|
+
function clockAt(date, timezone) {
|
|
2038
|
+
try {
|
|
2039
|
+
const parts = new Intl.DateTimeFormat("en-US", {
|
|
2040
|
+
timeZone: timezone,
|
|
2041
|
+
weekday: "short",
|
|
2042
|
+
hour: "2-digit",
|
|
2043
|
+
minute: "2-digit",
|
|
2044
|
+
hourCycle: "h23"
|
|
2045
|
+
}).formatToParts(date);
|
|
2046
|
+
const weekday = parts.find((part) => part.type === "weekday")?.value;
|
|
2047
|
+
const hour = Number(parts.find((part) => part.type === "hour")?.value);
|
|
2048
|
+
const minute = Number(parts.find((part) => part.type === "minute")?.value);
|
|
2049
|
+
if (!weekday || WEEKDAYS[weekday] === void 0 || !Number.isFinite(hour + minute))
|
|
2050
|
+
return void 0;
|
|
2051
|
+
return { day: WEEKDAYS[weekday], minute: hour * 60 + minute };
|
|
2052
|
+
} catch {
|
|
2053
|
+
return void 0;
|
|
2054
|
+
}
|
|
2055
|
+
}
|
|
2056
|
+
function targetMatches(rule, providerId, model) {
|
|
2057
|
+
if (rule.provider && rule.provider !== providerId) return false;
|
|
2058
|
+
if (rule.model && rule.model !== model) return false;
|
|
2059
|
+
return Boolean(rule.provider || rule.model);
|
|
2060
|
+
}
|
|
2061
|
+
function timeMatches(rule, day, minute) {
|
|
2062
|
+
const start = minuteOfDay(rule.start);
|
|
2063
|
+
const end = minuteOfDay(rule.end);
|
|
2064
|
+
if (start === void 0 || end === void 0) return false;
|
|
2065
|
+
const days = rule.days?.length ? new Set(rule.days) : void 0;
|
|
2066
|
+
if (start === end) return !days || days.has(day);
|
|
2067
|
+
if (start < end) return (!days || days.has(day)) && minute >= start && minute < end;
|
|
2068
|
+
if (minute >= start) return !days || days.has(day);
|
|
2069
|
+
const previousDay = (day + 6) % 7;
|
|
2070
|
+
return minute < end && (!days || days.has(previousDay));
|
|
2071
|
+
}
|
|
2072
|
+
function evaluateModelCalendar(rules, providerId, model, at = /* @__PURE__ */ new Date()) {
|
|
2073
|
+
({ providerId, model } = logicalCalendarTarget(providerId, model));
|
|
2074
|
+
const allowRules = [];
|
|
2075
|
+
let allowMatched = false;
|
|
2076
|
+
for (const rule of rules ?? []) {
|
|
2077
|
+
if (rule.enabled === false || !targetMatches(rule, providerId, model)) continue;
|
|
2078
|
+
const clock = clockAt(at, rule.timezone);
|
|
2079
|
+
if (!clock || minuteOfDay(rule.start) === void 0 || minuteOfDay(rule.end) === void 0)
|
|
2080
|
+
continue;
|
|
2081
|
+
if (rule.mode === "allow_only") {
|
|
2082
|
+
allowRules.push(rule);
|
|
2083
|
+
if (timeMatches(rule, clock.day, clock.minute)) allowMatched = true;
|
|
2084
|
+
} else if (timeMatches(rule, clock.day, clock.minute)) {
|
|
2085
|
+
return { allowed: false, rule };
|
|
2086
|
+
}
|
|
2087
|
+
}
|
|
2088
|
+
if (allowRules.length > 0 && !allowMatched) return { allowed: false, rule: allowRules[0] };
|
|
2089
|
+
return { allowed: true };
|
|
2090
|
+
}
|
|
2091
|
+
|
|
2014
2092
|
// src/types/blocks.ts
|
|
2015
2093
|
function isTextBlock(b) {
|
|
2016
2094
|
return b.type === "text";
|
|
@@ -2019,18 +2097,20 @@ function isTextBlock(b) {
|
|
|
2019
2097
|
// src/types/provider.ts
|
|
2020
2098
|
var CONTEXT_OVERFLOW_RE = /context.length|context.window|max.*tokens?.*exceeded|prompt is too long|too long|exceeds the context|\btokens\b.*exceed|context_length_exceeded/i;
|
|
2021
2099
|
var CONTENT_FILTER_RE = /content.(filter|policy|moderation)|safety (system|filter)/i;
|
|
2100
|
+
var QUOTA_EXHAUSTED_RE = /(?:insufficient|exhausted|depleted|exceeded|no|not enough)[-_\s]*(?:quota|credit|balance)|(?:quota|credit|balance)[-_\s]*(?:exhausted|depleted|exceeded|insufficient)|billing[_\s-]*(?:hard[_\s-]*)?limit|payment required|spending limit|plan limit/i;
|
|
2022
2101
|
function classifyProviderError(status, body, message) {
|
|
2023
2102
|
const type = body?.type;
|
|
2103
|
+
const text = [message, body?.message, type, body?.raw].filter(Boolean).join("\n");
|
|
2024
2104
|
if (status === 0) return "network";
|
|
2025
2105
|
if (status === 408) return "timeout";
|
|
2026
2106
|
if (status === 599) return "stream_hang";
|
|
2107
|
+
if (status === 402 || QUOTA_EXHAUSTED_RE.test(text)) return "quota_exhausted";
|
|
2027
2108
|
if (type === "rate_limit_error" || status === 429) return "rate_limit";
|
|
2028
2109
|
if (type === "overloaded_error" || status === 529) return "overloaded";
|
|
2029
2110
|
if (status >= 500) return "server";
|
|
2030
2111
|
if (type === "authentication_error" || type === "permission_error" || status === 401 || status === 403) {
|
|
2031
2112
|
return "auth";
|
|
2032
2113
|
}
|
|
2033
|
-
const text = [message, body?.message, type, body?.raw].filter(Boolean).join("\n");
|
|
2034
2114
|
if (type === "content_filter" || CONTENT_FILTER_RE.test(text)) return "content_filter";
|
|
2035
2115
|
if (status === 413 || status >= 400 && CONTEXT_OVERFLOW_RE.test(text)) {
|
|
2036
2116
|
return "context_overflow";
|
|
@@ -2043,6 +2123,7 @@ function isFallbackWorthy(kind) {
|
|
|
2043
2123
|
}
|
|
2044
2124
|
var FALLBACK_WORTHY_BY_KIND = {
|
|
2045
2125
|
rate_limit: true,
|
|
2126
|
+
quota_exhausted: true,
|
|
2046
2127
|
overloaded: true,
|
|
2047
2128
|
server: true,
|
|
2048
2129
|
timeout: true,
|
|
@@ -2121,6 +2202,7 @@ var KIND_TO_CODE = {
|
|
|
2121
2202
|
network: ERROR_CODES.PROVIDER_NETWORK_ERROR,
|
|
2122
2203
|
timeout: ERROR_CODES.PROVIDER_NETWORK_ERROR,
|
|
2123
2204
|
rate_limit: ERROR_CODES.PROVIDER_RATE_LIMITED,
|
|
2205
|
+
quota_exhausted: ERROR_CODES.PROVIDER_RATE_LIMITED,
|
|
2124
2206
|
auth: ERROR_CODES.PROVIDER_AUTH_FAILED,
|
|
2125
2207
|
overloaded: ERROR_CODES.PROVIDER_OVERLOADED,
|
|
2126
2208
|
context_overflow: ERROR_CODES.PROVIDER_CONTEXT_OVERFLOW,
|
|
@@ -2184,14 +2266,20 @@ var OneShotOrchestrator = class {
|
|
|
2184
2266
|
let servingProviderId = provider.id;
|
|
2185
2267
|
let servingModel = target.model;
|
|
2186
2268
|
let fromFallback = false;
|
|
2187
|
-
let lastError
|
|
2269
|
+
let lastError;
|
|
2188
2270
|
let fallbackEligible = false;
|
|
2189
|
-
if (tracker && !tracker.isAvailable(target.providerId, target.model)) {
|
|
2271
|
+
if (tracker && !tracker.isAvailable(target.providerId, target.model) || !evaluateModelCalendar(config.modelAvailabilitySchedule, target.providerId, target.model).allowed) {
|
|
2190
2272
|
this.opts.logger?.debug(
|
|
2191
2273
|
`one-shot: primary "${target.providerId}/${target.model}" is blocked \u2014 trying fallback`
|
|
2192
2274
|
);
|
|
2193
2275
|
} else {
|
|
2194
|
-
const primaryAttempt = await this.tryCall(
|
|
2276
|
+
const primaryAttempt = await this.tryCall(
|
|
2277
|
+
provider,
|
|
2278
|
+
request,
|
|
2279
|
+
signal,
|
|
2280
|
+
target.providerId,
|
|
2281
|
+
target.model
|
|
2282
|
+
);
|
|
2195
2283
|
const result = primaryAttempt.response;
|
|
2196
2284
|
lastError = primaryAttempt.error;
|
|
2197
2285
|
fallbackEligible = primaryAttempt.fallbackEligible;
|
|
@@ -2202,17 +2290,13 @@ var OneShotOrchestrator = class {
|
|
|
2202
2290
|
return this.buildResult(result, servingProviderId, servingModel, false, startedAt);
|
|
2203
2291
|
}
|
|
2204
2292
|
if (!fallbackEligible || chain.length === 0) {
|
|
2205
|
-
return this.buildErrorResult(
|
|
2206
|
-
lastError,
|
|
2207
|
-
target.providerId,
|
|
2208
|
-
target.model,
|
|
2209
|
-
false,
|
|
2210
|
-
startedAt
|
|
2211
|
-
);
|
|
2293
|
+
return this.buildErrorResult(lastError, target.providerId, target.model, false, startedAt);
|
|
2212
2294
|
}
|
|
2213
2295
|
}
|
|
2214
2296
|
const usableChain = tracker ? chain.filter((e) => tracker.isAvailable(e.providerId, e.model)) : chain;
|
|
2215
2297
|
for (const entry of usableChain) {
|
|
2298
|
+
if (!evaluateModelCalendar(config.modelAvailabilitySchedule, entry.providerId, entry.model).allowed)
|
|
2299
|
+
continue;
|
|
2216
2300
|
if (entry.providerId === provider.id && entry.model === target.model) continue;
|
|
2217
2301
|
let fbProvider;
|
|
2218
2302
|
try {
|
|
@@ -2239,7 +2323,13 @@ var OneShotOrchestrator = class {
|
|
|
2239
2323
|
fallbackEligible = attempt.fallbackEligible;
|
|
2240
2324
|
if (!fallbackEligible) break;
|
|
2241
2325
|
}
|
|
2242
|
-
return this.buildErrorResult(
|
|
2326
|
+
return this.buildErrorResult(
|
|
2327
|
+
lastError,
|
|
2328
|
+
servingProviderId,
|
|
2329
|
+
servingModel,
|
|
2330
|
+
fromFallback,
|
|
2331
|
+
startedAt
|
|
2332
|
+
);
|
|
2243
2333
|
}
|
|
2244
2334
|
// ── Private helpers ─────────────────────────────────────────────
|
|
2245
2335
|
/**
|
|
@@ -3624,6 +3714,40 @@ var DOMAIN_AGENTS = [
|
|
|
3624
3714
|
"information architecture"
|
|
3625
3715
|
]
|
|
3626
3716
|
}
|
|
3717
|
+
},
|
|
3718
|
+
{
|
|
3719
|
+
config: {
|
|
3720
|
+
id: "ios",
|
|
3721
|
+
name: "iOS",
|
|
3722
|
+
role: "ios",
|
|
3723
|
+
tools: [...TOOLS.build, "fetch"],
|
|
3724
|
+
prompt: agentPrompt("ios")
|
|
3725
|
+
},
|
|
3726
|
+
budget: HEAVY_BUDGET,
|
|
3727
|
+
capability: {
|
|
3728
|
+
phase: "domain",
|
|
3729
|
+
summary: "Apple-platform app development in Swift against the latest Xcode/iOS-SDK line: SwiftUI, UIKit, SwiftData, concurrency, accessibility, and App Store submission.",
|
|
3730
|
+
keywords: [
|
|
3731
|
+
"ios",
|
|
3732
|
+
"iphone",
|
|
3733
|
+
"ipad",
|
|
3734
|
+
"ipados",
|
|
3735
|
+
"watchos",
|
|
3736
|
+
"tvos",
|
|
3737
|
+
"visionos",
|
|
3738
|
+
"macos",
|
|
3739
|
+
"swift",
|
|
3740
|
+
"swiftui",
|
|
3741
|
+
"uikit",
|
|
3742
|
+
"xcode",
|
|
3743
|
+
"swiftdata",
|
|
3744
|
+
"app store",
|
|
3745
|
+
"app intents",
|
|
3746
|
+
"swift package manager",
|
|
3747
|
+
"cocoapods",
|
|
3748
|
+
"foundation models"
|
|
3749
|
+
]
|
|
3750
|
+
}
|
|
3627
3751
|
}
|
|
3628
3752
|
];
|
|
3629
3753
|
|
|
@@ -4094,7 +4218,8 @@ function providerHasKey(entry) {
|
|
|
4094
4218
|
if (!entry) return false;
|
|
4095
4219
|
if (hasText(entry.apiKey)) return true;
|
|
4096
4220
|
if (Array.isArray(entry.apiKeys) && entry.apiKeys.some((k) => hasText(k?.apiKey))) return true;
|
|
4097
|
-
if (Array.isArray(entry.envVars) && entry.envVars.some((v) => hasText(process.env[v])))
|
|
4221
|
+
if (Array.isArray(entry.envVars) && entry.envVars.some((v) => hasText(process.env[v])))
|
|
4222
|
+
return true;
|
|
4098
4223
|
return false;
|
|
4099
4224
|
}
|
|
4100
4225
|
function visibleProviderModels(config, providerId, providerModels) {
|
|
@@ -4166,6 +4291,8 @@ var FallbackProfileManager = class {
|
|
|
4166
4291
|
const health = this.checkProvider(providerId);
|
|
4167
4292
|
if (!health.usable) continue;
|
|
4168
4293
|
if (this.statusTracker && !this.statusTracker.isAvailable(providerId, parsed.model)) continue;
|
|
4294
|
+
if (!evaluateModelCalendar(this.config.modelAvailabilitySchedule, providerId, parsed.model).allowed)
|
|
4295
|
+
continue;
|
|
4169
4296
|
const allowedModels = this.config.providers?.[providerId]?.models;
|
|
4170
4297
|
if (allowedModels && !allowedModels.includes(parsed.model)) continue;
|
|
4171
4298
|
resolved.push({
|
|
@@ -4238,6 +4365,8 @@ var FallbackProfileManager = class {
|
|
|
4238
4365
|
seen.add(key);
|
|
4239
4366
|
if (excludeKey && key === excludeKey) continue;
|
|
4240
4367
|
if (this.statusTracker && !this.statusTracker.isAvailable(providerId, parsed.model)) continue;
|
|
4368
|
+
if (!evaluateModelCalendar(this.config.modelAvailabilitySchedule, providerId, parsed.model).allowed)
|
|
4369
|
+
continue;
|
|
4241
4370
|
resolved.push({
|
|
4242
4371
|
providerId,
|
|
4243
4372
|
model: parsed.model,
|
|
@@ -4282,6 +4411,8 @@ var FallbackProfileManager = class {
|
|
|
4282
4411
|
seen.add(ref);
|
|
4283
4412
|
if (excludeKey && ref === excludeKey) continue;
|
|
4284
4413
|
if (this.statusTracker && !this.statusTracker.isAvailable(id, model)) continue;
|
|
4414
|
+
if (!evaluateModelCalendar(this.config.modelAvailabilitySchedule, id, model).allowed)
|
|
4415
|
+
continue;
|
|
4285
4416
|
if (favoriteSet.has(ref)) {
|
|
4286
4417
|
favorites.push(ref);
|
|
4287
4418
|
continue;
|
|
@@ -4886,14 +5017,11 @@ var AGENT_MODEL_ASSIGN_SCHEMA = {
|
|
|
4886
5017
|
description: "Set to true to remove the matrix entry for this role (it will fall through to phase/*/leader)."
|
|
4887
5018
|
}
|
|
4888
5019
|
},
|
|
4889
|
-
oneOf
|
|
4890
|
-
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
{ required: ["role"] }
|
|
4895
|
-
// show current assignment
|
|
4896
|
-
],
|
|
5020
|
+
// Flattened from a top-level oneOf — Anthropic-family endpoints reject
|
|
5021
|
+
// top-level combinators (omniroute 400: "input_schema does not support
|
|
5022
|
+
// oneOf, allOf, or anyOf at the top level"). Combination rules are
|
|
5023
|
+
// enforced in the handler instead.
|
|
5024
|
+
required: ["role"],
|
|
4897
5025
|
additionalProperties: false
|
|
4898
5026
|
};
|
|
4899
5027
|
function createAgentModelAssignTool(opts) {
|
|
@@ -4909,6 +5037,13 @@ function createAgentModelAssignTool(opts) {
|
|
|
4909
5037
|
icon: "settings",
|
|
4910
5038
|
async execute(input) {
|
|
4911
5039
|
const config = opts.getConfig();
|
|
5040
|
+
const modes = [input.clear ? "clear" : null, input.profile ? "profile" : null, input.model ? "model" : null].filter(Boolean);
|
|
5041
|
+
if (modes.length > 1) {
|
|
5042
|
+
return {
|
|
5043
|
+
status: "error",
|
|
5044
|
+
message: `Conflicting assignment modes: ${modes.join(" + ")}. Use exactly one: clear=true, profile="name", or model="name" (optionally with provider).`
|
|
5045
|
+
};
|
|
5046
|
+
}
|
|
4912
5047
|
if (input.role === "list") {
|
|
4913
5048
|
const matrix = config.modelMatrix ?? {};
|
|
4914
5049
|
const keys = Object.keys(matrix);
|
|
@@ -5147,11 +5282,10 @@ var PROVIDER_KEY_SET_SCHEMA = {
|
|
|
5147
5282
|
description: "Whether to make this the active key. Default: true."
|
|
5148
5283
|
}
|
|
5149
5284
|
},
|
|
5150
|
-
oneOf
|
|
5151
|
-
|
|
5152
|
-
|
|
5153
|
-
|
|
5154
|
-
],
|
|
5285
|
+
// Flattened from a top-level oneOf — Anthropic-family endpoints reject
|
|
5286
|
+
// top-level combinators (omniroute 400). Combination rules are enforced
|
|
5287
|
+
// in the handler instead.
|
|
5288
|
+
required: ["provider"],
|
|
5155
5289
|
additionalProperties: false
|
|
5156
5290
|
};
|
|
5157
5291
|
function createProviderKeySetTool(opts) {
|
|
@@ -5170,6 +5304,12 @@ function createProviderKeySetTool(opts) {
|
|
|
5170
5304
|
const providers = {
|
|
5171
5305
|
...config.providers ?? {}
|
|
5172
5306
|
};
|
|
5307
|
+
if (input.key && input.envVar) {
|
|
5308
|
+
return {
|
|
5309
|
+
status: "error",
|
|
5310
|
+
message: "Provide either key (direct, visible to LLM) OR envVar (reads from environment, never visible to LLM), not both. Use envVar for security."
|
|
5311
|
+
};
|
|
5312
|
+
}
|
|
5173
5313
|
if (!input.key && !input.envVar) {
|
|
5174
5314
|
if (opts.requestInput) {
|
|
5175
5315
|
try {
|