@cogitator-ai/core 0.22.0 → 0.24.0
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 +95 -0
- package/dist/agent-tool.d.ts +7 -1
- package/dist/agent-tool.d.ts.map +1 -1
- package/dist/agent-tool.js +4 -1
- package/dist/agent-tool.js.map +1 -1
- package/dist/agent.d.ts +6 -25
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +18 -3
- package/dist/agent.js.map +1 -1
- package/dist/cogitator/handoffs.d.ts +14 -0
- package/dist/cogitator/handoffs.d.ts.map +1 -0
- package/dist/cogitator/handoffs.js +53 -0
- package/dist/cogitator/handoffs.js.map +1 -0
- package/dist/cogitator/initializers.d.ts.map +1 -1
- package/dist/cogitator/initializers.js +14 -2
- package/dist/cogitator/initializers.js.map +1 -1
- package/dist/cogitator/message-builder.d.ts +1 -1
- package/dist/cogitator/message-builder.d.ts.map +1 -1
- package/dist/cogitator/message-builder.js +23 -8
- package/dist/cogitator/message-builder.js.map +1 -1
- package/dist/cogitator/prompts.d.ts +69 -0
- package/dist/cogitator/prompts.d.ts.map +1 -0
- package/dist/cogitator/prompts.js +149 -0
- package/dist/cogitator/prompts.js.map +1 -0
- package/dist/cogitator/run-checkpoints.d.ts +20 -0
- package/dist/cogitator/run-checkpoints.d.ts.map +1 -0
- package/dist/cogitator/run-checkpoints.js +67 -0
- package/dist/cogitator/run-checkpoints.js.map +1 -0
- package/dist/cogitator/streaming.d.ts +9 -7
- package/dist/cogitator/streaming.d.ts.map +1 -1
- package/dist/cogitator/streaming.js +12 -1
- package/dist/cogitator/streaming.js.map +1 -1
- package/dist/cogitator/threads.d.ts +27 -0
- package/dist/cogitator/threads.d.ts.map +1 -0
- package/dist/cogitator/threads.js +54 -0
- package/dist/cogitator/threads.js.map +1 -0
- package/dist/cogitator/tool-executor.d.ts +1 -1
- package/dist/cogitator/tool-executor.d.ts.map +1 -1
- package/dist/cogitator/tool-executor.js +2 -2
- package/dist/cogitator/tool-executor.js.map +1 -1
- package/dist/constitutional/constitutional-ai.d.ts +7 -1
- package/dist/constitutional/constitutional-ai.d.ts.map +1 -1
- package/dist/constitutional/constitutional-ai.js +6 -2
- package/dist/constitutional/constitutional-ai.js.map +1 -1
- package/dist/constitutional/tool-guard.d.ts +3 -1
- package/dist/constitutional/tool-guard.d.ts.map +1 -1
- package/dist/constitutional/tool-guard.js +2 -2
- package/dist/constitutional/tool-guard.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/learning/postgres-trace-store.d.ts +5 -1
- package/dist/learning/postgres-trace-store.d.ts.map +1 -1
- package/dist/learning/postgres-trace-store.js +23 -0
- package/dist/learning/postgres-trace-store.js.map +1 -1
- package/dist/learning/prompt-stores.d.ts +26 -0
- package/dist/learning/prompt-stores.d.ts.map +1 -0
- package/dist/learning/prompt-stores.js +97 -0
- package/dist/learning/prompt-stores.js.map +1 -0
- package/dist/llm/anthropic-thinking.d.ts +29 -0
- package/dist/llm/anthropic-thinking.d.ts.map +1 -0
- package/dist/llm/anthropic-thinking.js +100 -0
- package/dist/llm/anthropic-thinking.js.map +1 -0
- package/dist/llm/anthropic.d.ts +14 -0
- package/dist/llm/anthropic.d.ts.map +1 -1
- package/dist/llm/anthropic.js +139 -85
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/azure.d.ts +2 -0
- package/dist/llm/azure.d.ts.map +1 -1
- package/dist/llm/azure.js +1 -0
- package/dist/llm/azure.js.map +1 -1
- package/dist/llm/bedrock.d.ts +2 -0
- package/dist/llm/bedrock.d.ts.map +1 -1
- package/dist/llm/bedrock.js +139 -39
- package/dist/llm/bedrock.js.map +1 -1
- package/dist/llm/claude-models.d.ts +23 -0
- package/dist/llm/claude-models.d.ts.map +1 -1
- package/dist/llm/claude-models.js +50 -0
- package/dist/llm/claude-models.js.map +1 -1
- package/dist/llm/errors.d.ts +5 -0
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +36 -26
- package/dist/llm/errors.js.map +1 -1
- package/dist/llm/google.d.ts +12 -1
- package/dist/llm/google.d.ts.map +1 -1
- package/dist/llm/google.js +91 -15
- package/dist/llm/google.js.map +1 -1
- package/dist/llm/index.d.ts +7 -2
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +16 -2
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/ollama.d.ts +6 -1
- package/dist/llm/ollama.d.ts.map +1 -1
- package/dist/llm/ollama.js +33 -3
- package/dist/llm/ollama.js.map +1 -1
- package/dist/llm/openai-compatible-base.d.ts.map +1 -1
- package/dist/llm/openai-compatible-base.js +29 -21
- package/dist/llm/openai-compatible-base.js.map +1 -1
- package/dist/llm/openai-responses.d.ts.map +1 -1
- package/dist/llm/openai-responses.js +20 -3
- package/dist/llm/openai-responses.js.map +1 -1
- package/dist/llm/openai.d.ts +2 -0
- package/dist/llm/openai.d.ts.map +1 -1
- package/dist/llm/openai.js +1 -0
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/retry.d.ts +32 -0
- package/dist/llm/retry.d.ts.map +1 -0
- package/dist/llm/retry.js +107 -0
- package/dist/llm/retry.js.map +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +3 -5
- package/dist/logger.js.map +1 -1
- package/dist/runtime.d.ts +49 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +571 -187
- package/dist/runtime.js.map +1 -1
- package/dist/security/pii.d.ts +44 -0
- package/dist/security/pii.d.ts.map +1 -0
- package/dist/security/pii.js +285 -0
- package/dist/security/pii.js.map +1 -0
- package/dist/skill.d.ts.map +1 -1
- package/dist/skill.js +16 -10
- package/dist/skill.js.map +1 -1
- package/dist/tools/audio-generate.d.ts +1 -1
- package/dist/tools/audio-generate.d.ts.map +1 -1
- package/dist/tools/audio-generate.js +2 -1
- package/dist/tools/audio-generate.js.map +1 -1
- package/dist/tools/audio-transcribe.d.ts.map +1 -1
- package/dist/tools/audio-transcribe.js +2 -1
- package/dist/tools/audio-transcribe.js.map +1 -1
- package/dist/tools/email.d.ts.map +1 -1
- package/dist/tools/email.js +10 -9
- package/dist/tools/email.js.map +1 -1
- package/dist/tools/github.d.ts.map +1 -1
- package/dist/tools/github.js +2 -1
- package/dist/tools/github.js.map +1 -1
- package/dist/tools/image-generate.d.ts +2 -2
- package/dist/tools/image-generate.d.ts.map +1 -1
- package/dist/tools/image-generate.js +2 -1
- package/dist/tools/image-generate.js.map +1 -1
- package/dist/tools/vector-search.d.ts.map +1 -1
- package/dist/tools/vector-search.js +8 -7
- package/dist/tools/vector-search.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +7 -6
- package/dist/tools/web-search.js.map +1 -1
- package/dist/utils/env.d.ts +9 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +26 -0
- package/dist/utils/env.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ABTest, ABTestOutcome, InstructionSource, InstructionVersion, PromptsConfig, RunPrompt, RunResult } from '@cogitator-ai/types';
|
|
2
|
+
import type { Agent } from '../agent.js';
|
|
3
|
+
import { type RollbackResult } from '../learning/rollback-manager.js';
|
|
4
|
+
/** An agent, or the key its instructions are versioned under. */
|
|
5
|
+
export type PromptTarget = Agent | string;
|
|
6
|
+
export interface StartABTestOptions {
|
|
7
|
+
name: string;
|
|
8
|
+
/** The instructions to test against the current ones */
|
|
9
|
+
treatment: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
/** Share of threads that get the treatment (default 0.5) */
|
|
12
|
+
treatmentAllocation?: number;
|
|
13
|
+
minSampleSize?: number;
|
|
14
|
+
/** Milliseconds after which the test completes even without a clear winner */
|
|
15
|
+
maxDuration?: number;
|
|
16
|
+
confidenceLevel?: number;
|
|
17
|
+
}
|
|
18
|
+
/** The instructions a run uses, and what to record its outcome against. */
|
|
19
|
+
export interface PromptResolution {
|
|
20
|
+
instructions: string;
|
|
21
|
+
prompt: RunPrompt;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Versioned instructions and A/B tests for agents: deploy a new version,
|
|
25
|
+
* roll back, see each version's metrics, and test new instructions against
|
|
26
|
+
* the current ones on live traffic.
|
|
27
|
+
*
|
|
28
|
+
* Versions are kept per agent `id` when it was set explicitly, else per
|
|
29
|
+
* `name`, so they outlive the process.
|
|
30
|
+
*/
|
|
31
|
+
export declare class PromptRegistry {
|
|
32
|
+
private readonly config;
|
|
33
|
+
private readonly versions;
|
|
34
|
+
private readonly rollback;
|
|
35
|
+
private readonly abTesting;
|
|
36
|
+
constructor(config?: PromptsConfig);
|
|
37
|
+
/** Deploy `instructions` as the agent's new current version. */
|
|
38
|
+
deploy(target: PromptTarget, instructions: string, source?: InstructionSource): Promise<InstructionVersion>;
|
|
39
|
+
/** The version runs of the agent use now, if any was deployed. */
|
|
40
|
+
current(target: PromptTarget): Promise<InstructionVersion | null>;
|
|
41
|
+
/** Versions of the agent, newest first. */
|
|
42
|
+
history(target: PromptTarget, limit?: number): Promise<InstructionVersion[]>;
|
|
43
|
+
/** Make an earlier version current again (as a new version), or the previous one. */
|
|
44
|
+
rollbackTo(target: PromptTarget, versionId?: string): Promise<RollbackResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Test `treatment` against the current instructions: each thread gets one
|
|
47
|
+
* of them until the test completes.
|
|
48
|
+
*/
|
|
49
|
+
startABTest(target: PromptTarget, options: StartABTestOptions): Promise<ABTest>;
|
|
50
|
+
/** The running A/B test of the agent, if any. */
|
|
51
|
+
activeABTest(target: PromptTarget): Promise<ABTest | null>;
|
|
52
|
+
/** Complete a test now; deploys the winner when `autoDeployWinner` is on. */
|
|
53
|
+
completeABTest(testId: string): Promise<ABTestOutcome>;
|
|
54
|
+
/**
|
|
55
|
+
* The instructions a run of `agent` in `threadId` uses: the running A/B
|
|
56
|
+
* test's variant for that thread, else the current version, else the
|
|
57
|
+
* agent's own.
|
|
58
|
+
*/
|
|
59
|
+
resolve(agent: Agent, threadId: string): Promise<PromptResolution>;
|
|
60
|
+
/** Record how a run went against the version or A/B variant it used. */
|
|
61
|
+
record(prompt: RunPrompt, outcome: {
|
|
62
|
+
result?: RunResult;
|
|
63
|
+
durationMs: number;
|
|
64
|
+
}): Promise<void>;
|
|
65
|
+
private deployWinner;
|
|
66
|
+
}
|
|
67
|
+
/** The key an agent's instructions are versioned under. */
|
|
68
|
+
export declare function promptKey(target: PromptTarget): string;
|
|
69
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/cogitator/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,aAAa,EAEb,iBAAiB,EACjB,kBAAkB,EAElB,aAAa,EACb,SAAS,EACT,SAAS,EACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAIpF,iEAAiE;AACjE,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc;IAKb,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;gBAElB,MAAM,GAAE,aAAkB;IAOvD,gEAAgE;IAChE,MAAM,CACJ,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,iBAA4B,GACnC,OAAO,CAAC,kBAAkB,CAAC;IAI9B,kEAAkE;IAClE,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAIjE,2CAA2C;IAC3C,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAI5E,qFAAqF;IACrF,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAO7E;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBrF,iDAAiD;IACjD,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI1D,6EAA6E;IACvE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAM5D;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmBxE,wEAAwE;IAClE,MAAM,CACV,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,SAAS,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,IAAI,CAAC;YAwBF,YAAY;CAQ3B;AAED,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEtD"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { ABTestingFramework } from '../learning/ab-testing.js';
|
|
2
|
+
import { RollbackManager } from '../learning/rollback-manager.js';
|
|
3
|
+
import { InMemoryABTestStore, InMemoryInstructionVersionStore } from '../learning/prompt-stores.js';
|
|
4
|
+
import { getLogger } from '../logger.js';
|
|
5
|
+
/**
|
|
6
|
+
* Versioned instructions and A/B tests for agents: deploy a new version,
|
|
7
|
+
* roll back, see each version's metrics, and test new instructions against
|
|
8
|
+
* the current ones on live traffic.
|
|
9
|
+
*
|
|
10
|
+
* Versions are kept per agent `id` when it was set explicitly, else per
|
|
11
|
+
* `name`, so they outlive the process.
|
|
12
|
+
*/
|
|
13
|
+
export class PromptRegistry {
|
|
14
|
+
config;
|
|
15
|
+
versions;
|
|
16
|
+
rollback;
|
|
17
|
+
abTesting;
|
|
18
|
+
constructor(config = {}) {
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.versions = config.versions ?? new InMemoryInstructionVersionStore();
|
|
21
|
+
const abTests = config.abTests ?? new InMemoryABTestStore();
|
|
22
|
+
this.rollback = new RollbackManager({ store: this.versions });
|
|
23
|
+
this.abTesting = new ABTestingFramework({ store: abTests });
|
|
24
|
+
}
|
|
25
|
+
/** Deploy `instructions` as the agent's new current version. */
|
|
26
|
+
deploy(target, instructions, source = 'manual') {
|
|
27
|
+
return this.rollback.deployVersion(promptKey(target), instructions, source);
|
|
28
|
+
}
|
|
29
|
+
/** The version runs of the agent use now, if any was deployed. */
|
|
30
|
+
current(target) {
|
|
31
|
+
return this.rollback.getCurrentVersion(promptKey(target));
|
|
32
|
+
}
|
|
33
|
+
/** Versions of the agent, newest first. */
|
|
34
|
+
history(target, limit) {
|
|
35
|
+
return this.rollback.getVersionHistory(promptKey(target), limit);
|
|
36
|
+
}
|
|
37
|
+
/** Make an earlier version current again (as a new version), or the previous one. */
|
|
38
|
+
rollbackTo(target, versionId) {
|
|
39
|
+
const key = promptKey(target);
|
|
40
|
+
return versionId
|
|
41
|
+
? this.rollback.rollbackTo(key, versionId)
|
|
42
|
+
: this.rollback.rollbackToPrevious(key);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Test `treatment` against the current instructions: each thread gets one
|
|
46
|
+
* of them until the test completes.
|
|
47
|
+
*/
|
|
48
|
+
async startABTest(target, options) {
|
|
49
|
+
const key = promptKey(target);
|
|
50
|
+
const control = (await this.current(key))?.instructions ??
|
|
51
|
+
(typeof target === 'string' ? undefined : target.instructions);
|
|
52
|
+
if (control === undefined) {
|
|
53
|
+
throw new Error(`No current instructions for "${key}" to test against`);
|
|
54
|
+
}
|
|
55
|
+
const test = await this.abTesting.createTest({
|
|
56
|
+
agentId: key,
|
|
57
|
+
name: options.name,
|
|
58
|
+
...(options.description && { description: options.description }),
|
|
59
|
+
controlInstructions: control,
|
|
60
|
+
treatmentInstructions: options.treatment,
|
|
61
|
+
...(options.treatmentAllocation !== undefined && {
|
|
62
|
+
treatmentAllocation: options.treatmentAllocation,
|
|
63
|
+
}),
|
|
64
|
+
...(options.minSampleSize !== undefined && { minSampleSize: options.minSampleSize }),
|
|
65
|
+
...(options.maxDuration !== undefined && { maxDuration: options.maxDuration }),
|
|
66
|
+
...(options.confidenceLevel !== undefined && { confidenceLevel: options.confidenceLevel }),
|
|
67
|
+
});
|
|
68
|
+
return this.abTesting.startTest(test.id);
|
|
69
|
+
}
|
|
70
|
+
/** The running A/B test of the agent, if any. */
|
|
71
|
+
activeABTest(target) {
|
|
72
|
+
return this.abTesting.getActiveTest(promptKey(target));
|
|
73
|
+
}
|
|
74
|
+
/** Complete a test now; deploys the winner when `autoDeployWinner` is on. */
|
|
75
|
+
async completeABTest(testId) {
|
|
76
|
+
const { test, outcome } = await this.abTesting.completeTest(testId);
|
|
77
|
+
await this.deployWinner(test, outcome);
|
|
78
|
+
return outcome;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The instructions a run of `agent` in `threadId` uses: the running A/B
|
|
82
|
+
* test's variant for that thread, else the current version, else the
|
|
83
|
+
* agent's own.
|
|
84
|
+
*/
|
|
85
|
+
async resolve(agent, threadId) {
|
|
86
|
+
const key = promptKey(agent);
|
|
87
|
+
const test = await this.abTesting.getActiveTest(key);
|
|
88
|
+
if (test) {
|
|
89
|
+
const variant = stickyVariant(test, threadId);
|
|
90
|
+
return {
|
|
91
|
+
instructions: this.abTesting.getInstructionsForVariant(test, variant),
|
|
92
|
+
prompt: { key, abTest: { id: test.id, variant } },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const version = await this.rollback.getCurrentVersion(key);
|
|
96
|
+
return version
|
|
97
|
+
? {
|
|
98
|
+
instructions: version.instructions,
|
|
99
|
+
prompt: { key, versionId: version.id, version: version.version },
|
|
100
|
+
}
|
|
101
|
+
: { instructions: agent.instructions, prompt: { key } };
|
|
102
|
+
}
|
|
103
|
+
/** Record how a run went against the version or A/B variant it used. */
|
|
104
|
+
async record(prompt, outcome) {
|
|
105
|
+
const { result, durationMs } = outcome;
|
|
106
|
+
const score = result ? await (this.config.score?.(result) ?? 1) : 0;
|
|
107
|
+
const cost = result?.usage.cost ?? 0;
|
|
108
|
+
if (prompt.abTest) {
|
|
109
|
+
await this.abTesting.recordResult(prompt.abTest.id, prompt.abTest.variant, score, durationMs, cost);
|
|
110
|
+
const finished = await this.abTesting.checkAndCompleteIfReady(prompt.abTest.id);
|
|
111
|
+
if (finished) {
|
|
112
|
+
const test = await this.abTesting.getTest(prompt.abTest.id);
|
|
113
|
+
if (test)
|
|
114
|
+
await this.deployWinner(test, finished);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (prompt.versionId) {
|
|
118
|
+
await this.rollback.recordMetrics(prompt.key, score, durationMs, cost, result !== undefined);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async deployWinner(test, outcome) {
|
|
122
|
+
if (!this.config.autoDeployWinner || outcome.winner !== 'treatment')
|
|
123
|
+
return;
|
|
124
|
+
await this.rollback.deployVersion(test.agentId, test.treatmentInstructions, 'ab_test', test.id);
|
|
125
|
+
getLogger().info('Deployed the winning instructions of an A/B test', {
|
|
126
|
+
agent: test.agentId,
|
|
127
|
+
test: test.id,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** The key an agent's instructions are versioned under. */
|
|
132
|
+
export function promptKey(target) {
|
|
133
|
+
return typeof target === 'string' ? target : (target.config.id ?? target.name);
|
|
134
|
+
}
|
|
135
|
+
/** The same variant for every run of a thread, spread by the test's allocation. */
|
|
136
|
+
function stickyVariant(test, threadId) {
|
|
137
|
+
let hash = 2166136261;
|
|
138
|
+
for (const char of `${test.id}:${threadId}`) {
|
|
139
|
+
hash ^= char.charCodeAt(0);
|
|
140
|
+
hash = Math.imul(hash, 16777619);
|
|
141
|
+
}
|
|
142
|
+
hash ^= hash >>> 16;
|
|
143
|
+
hash = Math.imul(hash, 0x85ebca6b);
|
|
144
|
+
hash ^= hash >>> 13;
|
|
145
|
+
hash = Math.imul(hash, 0xc2b2ae35);
|
|
146
|
+
hash ^= hash >>> 16;
|
|
147
|
+
return (hash >>> 0) / 4294967296 < test.treatmentAllocation ? 'treatment' : 'control';
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cogitator/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { MemoryAdapter, RunCheckpoint, RunCheckpointStore } from '@cogitator-ai/types';
|
|
2
|
+
/** Paused runs in process memory; they are lost when the process exits. */
|
|
3
|
+
export declare class InMemoryRunCheckpointStore implements RunCheckpointStore {
|
|
4
|
+
private readonly checkpoints;
|
|
5
|
+
save(checkpoint: RunCheckpoint): Promise<void>;
|
|
6
|
+
load(threadId: string): Promise<RunCheckpoint | null>;
|
|
7
|
+
delete(threadId: string): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Paused runs kept in their thread's metadata, so they last as long as the
|
|
11
|
+
* memory adapter's threads do (Redis, Postgres, SQLite, MongoDB).
|
|
12
|
+
*/
|
|
13
|
+
export declare class ThreadRunCheckpointStore implements RunCheckpointStore {
|
|
14
|
+
private readonly memory;
|
|
15
|
+
constructor(memory: MemoryAdapter);
|
|
16
|
+
save(checkpoint: RunCheckpoint): Promise<void>;
|
|
17
|
+
load(threadId: string): Promise<RunCheckpoint | null>;
|
|
18
|
+
delete(threadId: string): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=run-checkpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-checkpoints.d.ts","sourceRoot":"","sources":["../../src/cogitator/run-checkpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE5F,2EAA2E;AAC3E,qBAAa,0BAA2B,YAAW,kBAAkB;IACnE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoC;IAE1D,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAKrD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9C;AAID;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,kBAAkB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB9C,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAOrD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO9C"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** Paused runs in process memory; they are lost when the process exits. */
|
|
2
|
+
export class InMemoryRunCheckpointStore {
|
|
3
|
+
checkpoints = new Map();
|
|
4
|
+
async save(checkpoint) {
|
|
5
|
+
this.checkpoints.set(checkpoint.threadId, structuredClone(checkpoint));
|
|
6
|
+
}
|
|
7
|
+
async load(threadId) {
|
|
8
|
+
const checkpoint = this.checkpoints.get(threadId);
|
|
9
|
+
return checkpoint ? structuredClone(checkpoint) : null;
|
|
10
|
+
}
|
|
11
|
+
async delete(threadId) {
|
|
12
|
+
this.checkpoints.delete(threadId);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const PAUSED_RUN_KEY = 'pausedRun';
|
|
16
|
+
/**
|
|
17
|
+
* Paused runs kept in their thread's metadata, so they last as long as the
|
|
18
|
+
* memory adapter's threads do (Redis, Postgres, SQLite, MongoDB).
|
|
19
|
+
*/
|
|
20
|
+
export class ThreadRunCheckpointStore {
|
|
21
|
+
memory;
|
|
22
|
+
constructor(memory) {
|
|
23
|
+
this.memory = memory;
|
|
24
|
+
}
|
|
25
|
+
async save(checkpoint) {
|
|
26
|
+
const existing = await this.memory.getThread(checkpoint.threadId);
|
|
27
|
+
if (!existing.success)
|
|
28
|
+
throw new Error(existing.error);
|
|
29
|
+
if (!existing.data) {
|
|
30
|
+
const created = await this.memory.createThread(checkpoint.agentId, {
|
|
31
|
+
agentId: checkpoint.agentId,
|
|
32
|
+
...(checkpoint.userId !== undefined && { userId: checkpoint.userId }),
|
|
33
|
+
}, checkpoint.threadId);
|
|
34
|
+
if (!created.success)
|
|
35
|
+
throw new Error(created.error);
|
|
36
|
+
}
|
|
37
|
+
const updated = await this.memory.updateThread(checkpoint.threadId, {
|
|
38
|
+
[PAUSED_RUN_KEY]: checkpoint,
|
|
39
|
+
});
|
|
40
|
+
if (!updated.success)
|
|
41
|
+
throw new Error(updated.error);
|
|
42
|
+
}
|
|
43
|
+
async load(threadId) {
|
|
44
|
+
const thread = await this.memory.getThread(threadId);
|
|
45
|
+
if (!thread.success)
|
|
46
|
+
throw new Error(thread.error);
|
|
47
|
+
const stored = thread.data?.metadata[PAUSED_RUN_KEY];
|
|
48
|
+
return isCheckpoint(stored) ? stored : null;
|
|
49
|
+
}
|
|
50
|
+
async delete(threadId) {
|
|
51
|
+
const thread = await this.memory.getThread(threadId);
|
|
52
|
+
if (!thread.success)
|
|
53
|
+
throw new Error(thread.error);
|
|
54
|
+
if (thread.data?.metadata[PAUSED_RUN_KEY] == null)
|
|
55
|
+
return;
|
|
56
|
+
const updated = await this.memory.updateThread(threadId, { [PAUSED_RUN_KEY]: null });
|
|
57
|
+
if (!updated.success)
|
|
58
|
+
throw new Error(updated.error);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function isCheckpoint(value) {
|
|
62
|
+
return (typeof value === 'object' &&
|
|
63
|
+
value !== null &&
|
|
64
|
+
value.version === 1 &&
|
|
65
|
+
typeof value.threadId === 'string');
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=run-checkpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-checkpoints.js","sourceRoot":"","sources":["../../src/cogitator/run-checkpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LLMBackend, LLMResponseFormat, Message, ToolCall } from '@cogitator-ai/types';
|
|
1
|
+
import type { ChatUsage, LLMBackend, LLMResponseFormat, Message, PromptCacheConfig, ReasoningConfig, ToolCall } from '@cogitator-ai/types';
|
|
2
2
|
import { ToolRegistry } from '../registry.js';
|
|
3
3
|
import type { Agent } from '../agent.js';
|
|
4
4
|
export interface StreamChatResult {
|
|
@@ -6,11 +6,13 @@ export interface StreamChatResult {
|
|
|
6
6
|
content: string;
|
|
7
7
|
toolCalls?: ToolCall[];
|
|
8
8
|
finishReason: 'stop' | 'tool_calls' | 'length' | 'error';
|
|
9
|
-
usage:
|
|
10
|
-
|
|
11
|
-
outputTokens: number;
|
|
12
|
-
totalTokens: number;
|
|
13
|
-
};
|
|
9
|
+
usage: ChatUsage;
|
|
10
|
+
reasoning?: string;
|
|
14
11
|
}
|
|
15
|
-
export
|
|
12
|
+
export interface StreamChatExtras {
|
|
13
|
+
reasoning?: ReasoningConfig;
|
|
14
|
+
cache?: PromptCacheConfig | false;
|
|
15
|
+
onReasoning?: (delta: string) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function streamChat(backend: LLMBackend, model: string, messages: Message[], registry: ToolRegistry, agent: Agent, onToken: (token: string) => void, signal?: AbortSignal, responseFormat?: LLMResponseFormat, extras?: StreamChatExtras): Promise<StreamChatResult>;
|
|
16
18
|
//# sourceMappingURL=streaming.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/cogitator/streaming.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/cogitator/streaming.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,OAAO,EACP,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzD,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAChC,MAAM,CAAC,EAAE,WAAW,EACpB,cAAc,CAAC,EAAE,iBAAiB,EAClC,MAAM,GAAE,gBAAqB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAyG3B"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { nanoid } from 'nanoid';
|
|
2
2
|
import { countMessagesTokens } from '@cogitator-ai/memory';
|
|
3
|
-
export async function streamChat(backend, model, messages, registry, agent, onToken, signal, responseFormat) {
|
|
3
|
+
export async function streamChat(backend, model, messages, registry, agent, onToken, signal, responseFormat, extras = {}) {
|
|
4
4
|
throwIfStreamAborted(signal);
|
|
5
5
|
let content = '';
|
|
6
|
+
let reasoning = '';
|
|
7
|
+
let streamUsage;
|
|
6
8
|
let toolCalls;
|
|
7
9
|
let finishReason = 'stop';
|
|
8
10
|
let inputTokens = 0;
|
|
@@ -17,6 +19,8 @@ export async function streamChat(backend, model, messages, registry, agent, onTo
|
|
|
17
19
|
maxTokens: agent.config.maxTokens,
|
|
18
20
|
stop: agent.config.stopSequences,
|
|
19
21
|
responseFormat,
|
|
22
|
+
reasoning: extras.reasoning,
|
|
23
|
+
cache: extras.cache,
|
|
20
24
|
signal,
|
|
21
25
|
});
|
|
22
26
|
for await (const chunk of stream) {
|
|
@@ -25,6 +29,10 @@ export async function streamChat(backend, model, messages, registry, agent, onTo
|
|
|
25
29
|
content += chunk.delta.content;
|
|
26
30
|
onToken(chunk.delta.content);
|
|
27
31
|
}
|
|
32
|
+
if (chunk.delta.reasoning) {
|
|
33
|
+
reasoning += chunk.delta.reasoning;
|
|
34
|
+
extras.onReasoning?.(chunk.delta.reasoning);
|
|
35
|
+
}
|
|
28
36
|
if (chunk.delta.toolCalls) {
|
|
29
37
|
if (!toolCalls)
|
|
30
38
|
toolCalls = [];
|
|
@@ -69,6 +77,7 @@ export async function streamChat(backend, model, messages, registry, agent, onTo
|
|
|
69
77
|
if (chunk.usage) {
|
|
70
78
|
inputTokens = chunk.usage.inputTokens;
|
|
71
79
|
outputTokens = chunk.usage.outputTokens;
|
|
80
|
+
streamUsage = chunk.usage;
|
|
72
81
|
hasUsageFromStream = true;
|
|
73
82
|
}
|
|
74
83
|
}
|
|
@@ -85,10 +94,12 @@ export async function streamChat(backend, model, messages, registry, agent, onTo
|
|
|
85
94
|
toolCalls,
|
|
86
95
|
finishReason,
|
|
87
96
|
usage: {
|
|
97
|
+
...streamUsage,
|
|
88
98
|
inputTokens,
|
|
89
99
|
outputTokens,
|
|
90
100
|
totalTokens: inputTokens + outputTokens,
|
|
91
101
|
},
|
|
102
|
+
...(reasoning && { reasoning }),
|
|
92
103
|
};
|
|
93
104
|
}
|
|
94
105
|
function throwIfStreamAborted(signal) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/cogitator/streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/cogitator/streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAUhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAmB3D,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAmB,EACnB,KAAa,EACb,QAAmB,EACnB,QAAsB,EACtB,KAAY,EACZ,OAAgC,EAChC,MAAoB,EACpB,cAAkC,EAClC,SAA2B,EAAE;IAE7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,WAAkC,CAAC;IACvC,IAAI,SAAiC,CAAC;IACtC,IAAI,YAAY,GAA+C,MAAM,CAAC;IACtE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;QAChC,KAAK;QACL,QAAQ;QACR,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE;QAC5B,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;QACrC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;QACvB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS;QACjC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa;QAChC,cAAc;QACd,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM;KACP,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC1B,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;YACnC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS;gBAAE,SAAS,GAAG,EAAE,CAAC;YAC/B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC5C,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC9D,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;4BACtB,QAAQ,CAAC,SAAS,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;wBACvE,CAAC;wBACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;4BAC7B,QAAQ,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;wBACvD,CAAC;wBACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;4BACnB,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;wBACnC,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,QAAQ,GAAa;4BACzB,EAAE,EAAE,OAAO,CAAC,EAAE;4BACd,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;yBACnC,CAAC;wBACF,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;4BAC7B,QAAQ,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;wBACvD,CAAC;wBACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;4BACnB,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;wBACnC,CAAC;wBACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC3B,CAAC;gBACH,CAAC;qBAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;oBACrD,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACpC,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;YACtC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;YACxC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC5C,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;QACvE,YAAY,GAAG,YAAY,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,EAAE,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,EAAE;QACzB,OAAO;QACP,SAAS;QACT,YAAY;QACZ,KAAK,EAAE;YACL,GAAG,WAAW;YACd,WAAW;YACX,YAAY;YACZ,WAAW,EAAE,WAAW,GAAG,YAAY;SACxC;QACD,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAoB;IAChD,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,YAAY,KAAK,EAAE,CAAC;QACnC,MAAM,MAAM,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { MemoryAdapter, Thread } from '@cogitator-ai/types';
|
|
2
|
+
/** The user a thread belongs to: the `userId` of the run that created it. */
|
|
3
|
+
export declare function threadOwner(thread: Thread): string | undefined;
|
|
4
|
+
/**
|
|
5
|
+
* Checks that `userId` may use thread `threadId`, for code that takes thread
|
|
6
|
+
* ids from clients: a thread is open only to its owner, and one without an
|
|
7
|
+
* owner only to callers without a user.
|
|
8
|
+
*
|
|
9
|
+
* Returns the thread, or `null` when it does not exist yet. Throws
|
|
10
|
+
* `THREAD_ACCESS_DENIED` for another user's thread, and `MEMORY_READ_FAILED`
|
|
11
|
+
* when the thread cannot be read, since its owner is then unknown.
|
|
12
|
+
*/
|
|
13
|
+
export declare function assertThreadAccess(memory: MemoryAdapter, threadId: string, userId: string | undefined): Promise<Thread | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Thread `threadId` for `userId`, checked as in `assertThreadAccess`, and
|
|
16
|
+
* created for them when it does not exist yet.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ensureThreadAccess(memory: MemoryAdapter, threadId: string, owner: {
|
|
19
|
+
agentId: string;
|
|
20
|
+
userId?: string;
|
|
21
|
+
}): Promise<Thread>;
|
|
22
|
+
/** Metadata of a new thread: the agent it is for and the user who owns it. */
|
|
23
|
+
export declare function threadMetadata(owner: {
|
|
24
|
+
agentId: string;
|
|
25
|
+
userId?: string;
|
|
26
|
+
}): Record<string, unknown>;
|
|
27
|
+
//# sourceMappingURL=threads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/cogitator/threads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGjE,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG9D;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBxB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1C,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE1B"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CogitatorError, ErrorCode } from '@cogitator-ai/types';
|
|
2
|
+
/** The user a thread belongs to: the `userId` of the run that created it. */
|
|
3
|
+
export function threadOwner(thread) {
|
|
4
|
+
const owner = thread.metadata?.userId;
|
|
5
|
+
return typeof owner === 'string' ? owner : undefined;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Checks that `userId` may use thread `threadId`, for code that takes thread
|
|
9
|
+
* ids from clients: a thread is open only to its owner, and one without an
|
|
10
|
+
* owner only to callers without a user.
|
|
11
|
+
*
|
|
12
|
+
* Returns the thread, or `null` when it does not exist yet. Throws
|
|
13
|
+
* `THREAD_ACCESS_DENIED` for another user's thread, and `MEMORY_READ_FAILED`
|
|
14
|
+
* when the thread cannot be read, since its owner is then unknown.
|
|
15
|
+
*/
|
|
16
|
+
export async function assertThreadAccess(memory, threadId, userId) {
|
|
17
|
+
const result = await memory.getThread(threadId);
|
|
18
|
+
if (!result.success) {
|
|
19
|
+
throw new CogitatorError({
|
|
20
|
+
message: `Thread ${threadId} could not be read: ${result.error}`,
|
|
21
|
+
code: ErrorCode.MEMORY_READ_FAILED,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const thread = result.data;
|
|
25
|
+
if (thread && threadOwner(thread) !== userId) {
|
|
26
|
+
throw new CogitatorError({
|
|
27
|
+
message: `Thread ${threadId} belongs to another user`,
|
|
28
|
+
code: ErrorCode.THREAD_ACCESS_DENIED,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return thread;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Thread `threadId` for `userId`, checked as in `assertThreadAccess`, and
|
|
35
|
+
* created for them when it does not exist yet.
|
|
36
|
+
*/
|
|
37
|
+
export async function ensureThreadAccess(memory, threadId, owner) {
|
|
38
|
+
const existing = await assertThreadAccess(memory, threadId, owner.userId);
|
|
39
|
+
if (existing)
|
|
40
|
+
return existing;
|
|
41
|
+
const created = await memory.createThread(owner.agentId, threadMetadata(owner), threadId);
|
|
42
|
+
if (!created.success) {
|
|
43
|
+
throw new CogitatorError({
|
|
44
|
+
message: `Thread ${threadId} could not be created: ${created.error}`,
|
|
45
|
+
code: ErrorCode.MEMORY_WRITE_FAILED,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return created.data;
|
|
49
|
+
}
|
|
50
|
+
/** Metadata of a new thread: the agent it is for and the user who owns it. */
|
|
51
|
+
export function threadMetadata(owner) {
|
|
52
|
+
return { agentId: owner.agentId, ...(owner.userId !== undefined && { userId: owner.userId }) };
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=threads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/cogitator/threads.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhE,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAqB,EACrB,QAAgB,EAChB,MAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,cAAc,CAAC;YACvB,OAAO,EAAE,UAAU,QAAQ,uBAAuB,MAAM,CAAC,KAAK,EAAE;YAChE,IAAI,EAAE,SAAS,CAAC,kBAAkB;SACnC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAC3B,IAAI,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,cAAc,CAAC;YACvB,OAAO,EAAE,UAAU,QAAQ,0BAA0B;YACrD,IAAI,EAAE,SAAS,CAAC,oBAAoB;SACrC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAqB,EACrB,QAAgB,EAChB,KAA2C;IAE3C,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1F,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,cAAc,CAAC;YACvB,OAAO,EAAE,UAAU,QAAQ,0BAA0B,OAAO,CAAC,KAAK,EAAE;YACpE,IAAI,EAAE,SAAS,CAAC,mBAAmB;SACpC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,KAG9B;IACC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AACjG,CAAC"}
|
|
@@ -8,7 +8,7 @@ type ExtraToolContext = {
|
|
|
8
8
|
channelType?: string;
|
|
9
9
|
channelId?: string;
|
|
10
10
|
};
|
|
11
|
-
export declare function executeTool(registry: ToolRegistry, toolCall: ToolCall, runId: string, agentId: string, sandboxManager: SandboxManager | undefined, constitutionalAI: ConstitutionalAI | undefined, filterToolCalls: boolean, initializeSandbox: () => Promise<SandboxManager | undefined>, signal?: AbortSignal, extraContext?: ExtraToolContext): Promise<ToolResult>;
|
|
11
|
+
export declare function executeTool(registry: ToolRegistry, toolCall: ToolCall, runId: string, agentId: string, sandboxManager: SandboxManager | undefined, constitutionalAI: ConstitutionalAI | undefined, filterToolCalls: boolean, initializeSandbox: () => Promise<SandboxManager | undefined>, signal?: AbortSignal, extraContext?: ExtraToolContext, approvedByUser?: boolean): Promise<ToolResult>;
|
|
12
12
|
export declare function createToolMessage(toolCall: ToolCall, result: ToolResult): Message;
|
|
13
13
|
export {};
|
|
14
14
|
//# sourceMappingURL=tool-executor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/cogitator/tool-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,UAAU,EAAe,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,KAAK,gBAAgB,GAAG;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,EAC9C,eAAe,EAAE,OAAO,EACxB,iBAAiB,EAAE,MAAM,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,EAC5D,MAAM,CAAC,EAAE,WAAW,EACpB,YAAY,CAAC,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/cogitator/tool-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,UAAU,EAAe,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,KAAK,gBAAgB,GAAG;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,EAC9C,eAAe,EAAE,OAAO,EACxB,iBAAiB,EAAE,MAAM,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,EAC5D,MAAM,CAAC,EAAE,WAAW,EACpB,YAAY,CAAC,EAAE,gBAAgB,EAC/B,cAAc,UAAQ,GACrB,OAAO,CAAC,UAAU,CAAC,CA6ErB;AA4KD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAUjF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getLogger } from '../logger.js';
|
|
2
2
|
import { createLinkedAbortController } from '../utils/abort.js';
|
|
3
|
-
export async function executeTool(registry, toolCall, runId, agentId, sandboxManager, constitutionalAI, filterToolCalls, initializeSandbox, signal, extraContext) {
|
|
3
|
+
export async function executeTool(registry, toolCall, runId, agentId, sandboxManager, constitutionalAI, filterToolCalls, initializeSandbox, signal, extraContext, approvedByUser = false) {
|
|
4
4
|
const tool = registry.get(toolCall.name);
|
|
5
5
|
if (!tool) {
|
|
6
6
|
return {
|
|
@@ -31,7 +31,7 @@ export async function executeTool(registry, toolCall, runId, agentId, sandboxMan
|
|
|
31
31
|
signal: signal ?? new AbortController().signal,
|
|
32
32
|
...extraContext,
|
|
33
33
|
};
|
|
34
|
-
const guardResult = await constitutionalAI.guardTool(tool, validatedArgs, context);
|
|
34
|
+
const guardResult = await constitutionalAI.guardTool(tool, validatedArgs, context, { approvedByUser });
|
|
35
35
|
if (!guardResult.approved) {
|
|
36
36
|
return {
|
|
37
37
|
callId: toolCall.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/cogitator/tool-executor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAS7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAsB,EACtB,QAAkB,EAClB,KAAa,EACb,OAAe,EACf,cAA0C,EAC1C,gBAA8C,EAC9C,eAAwB,EACxB,iBAA4D,EAC5D,MAAoB,EACpB,YAA+B
|
|
1
|
+
{"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/cogitator/tool-executor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAS7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAsB,EACtB,QAAkB,EAClB,KAAa,EACb,OAAe,EACf,cAA0C,EAC1C,gBAA8C,EAC9C,eAAwB,EACxB,iBAA4D,EAC5D,MAAoB,EACpB,YAA+B,EAC/B,cAAc,GAAG,KAAK;IAEtB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,mBAAmB,QAAQ,CAAC,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,UAAU,CAAC;IAC9D,IAAI,aAAa,GAAY,QAAQ,CAAC,SAAS,CAAC;IAEhD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,sBAAsB,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;aACzD,CAAC;QACJ,CAAC;QACD,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC;IACnC,CAAC;IAED,IAAI,gBAAgB,IAAI,eAAe,EAAE,CAAC;QACxC,MAAM,OAAO,GAAgB;YAC3B,OAAO;YACP,KAAK;YACL,MAAM,EAAE,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM;YAC9C,GAAG,YAAY;SAChB,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAClD,IAAI,EACJ,aAAwC,EACxC,OAAO,EACP,EAAE,cAAc,EAAE,CACnB,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1B,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,iBAAiB,WAAW,CAAC,MAAM,IAAI,kBAAkB,EAAE;aACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GACV,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,MAAM;QAC9D,CAAC,CAAC,MAAM,gBAAgB,CACpB,IAAI,EACJ,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,aAAwC,EAAE,EACpE,KAAK,EACL,OAAO,EACP,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,YAAY,CACb;QACH,CAAC,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAEjG,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAErD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,gBAAgB,CACtD,IAAI,CAAC,IAAI,EACT,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAC9B,CAAC;IACF,IAAI,QAAQ,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IACpC,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,wBAAwB,QAAQ,CAAC,aAAa,IAAI,kBAAkB,EAAE;KAC9E,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAU,EACV,QAAkB,EAClB,IAAa,EACb,KAAa,EACb,OAAe,EACf,MAAoB,EACpB,YAA+B;IAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,MAAM,OAAO,GAAgB;QAC3B,OAAO;QACP,KAAK;QACL,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM;QAC/D,GAAG,YAAY;KAChB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAA0C,EAAE,OAAO,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAChD,KAAK,CAAC,QAAQ;gBACZ,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,qBAAqB,SAAS,IAAI,CAAC;gBACjE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,IAAI,WAAW,CAAC,CAChE;YACH,CAAC,CAAC,MAAM,SAAS,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM;SACP,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,OAAmB,EACnB,MAAmB,EACnB,WAAwB;IAExB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACzC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,MAAe,EAAE,eAAuB;IACvD,IAAI,MAAM,YAAY,KAAK;QAAE,OAAO,MAAM,CAAC;IAC3C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IAC/E,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,IAAU,EACV,QAAkB,EAClB,KAAa,EACb,OAAe,EACf,cAA0C,EAC1C,iBAA4D,EAC5D,MAAoB,EACpB,YAA+B;IAE/B,MAAM,OAAO,GAAG,cAAc,IAAI,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC;IAE9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,EAAE,CAAC,IAAI,CAAC,yCAAyC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjF,OAAO,eAAe,CACpB,IAAI,EACJ,QAAQ,EACR,QAAQ,CAAC,SAAS,EAClB,KAAK,EACL,OAAO,EACP,MAAM,EACN,YAAY,CACb,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;IAChC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAQ,CAAC;IAEpC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,KAAK,MAAM,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM;QACpB,CAAC,CAAC;YACE,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB;QACH,CAAC,CAAC;YACE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACjD,GAAG,EAAE,IAAI,CAAC,GAAyB;YACnC,GAAG,EAAE,IAAI,CAAC,GAAyC;YACnD,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IAEN,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAE7D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,sCAAsC;SAC9C,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,MAAM;aACf,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;aAC3B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,EAAE;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;YAC1B,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;YAC1B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;YAC9B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;YAC9B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAkB,EAAE,MAAkB;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK;QAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -23,7 +23,13 @@ export declare class ConstitutionalAI {
|
|
|
23
23
|
* filter, when `filterToolResults` is on.
|
|
24
24
|
*/
|
|
25
25
|
filterToolResult(toolName: string, content: string): Promise<FilterResult>;
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Check a tool call against the guardrails. `approvedByUser` marks a call a
|
|
28
|
+
* person already approved, so its `requiresApproval` is not asked again.
|
|
29
|
+
*/
|
|
30
|
+
guardTool(tool: Tool, args: Record<string, unknown>, context: ToolContext, options?: {
|
|
31
|
+
approvedByUser?: boolean;
|
|
32
|
+
}): Promise<ToolGuardResult>;
|
|
27
33
|
critiqueAndRevise(response: string, context: Message[]): Promise<RevisionResult>;
|
|
28
34
|
setConstitution(constitution: Constitution): void;
|
|
29
35
|
addPrinciple(principle: ConstitutionalPrinciple): void;
|