@calliopelabs/cli 3.7.0 → 3.8.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 +13 -0
- package/dist/approvals/request.d.ts.map +1 -1
- package/dist/approvals/request.js +10 -0
- package/dist/approvals/request.js.map +1 -1
- package/dist/auth/chatgpt/fallback.d.ts +31 -0
- package/dist/auth/chatgpt/fallback.d.ts.map +1 -0
- package/dist/auth/chatgpt/fallback.js +111 -0
- package/dist/auth/chatgpt/fallback.js.map +1 -0
- package/dist/auth/chatgpt/index.d.ts +6 -0
- package/dist/auth/chatgpt/index.d.ts.map +1 -0
- package/dist/auth/chatgpt/index.js +6 -0
- package/dist/auth/chatgpt/index.js.map +1 -0
- package/dist/auth/chatgpt/login.d.ts +4 -0
- package/dist/auth/chatgpt/login.d.ts.map +1 -0
- package/dist/auth/chatgpt/login.js +82 -0
- package/dist/auth/chatgpt/login.js.map +1 -0
- package/dist/auth/chatgpt/protocol.d.ts +24 -0
- package/dist/auth/chatgpt/protocol.d.ts.map +1 -0
- package/dist/auth/chatgpt/protocol.js +71 -0
- package/dist/auth/chatgpt/protocol.js.map +1 -0
- package/dist/auth/chatgpt/session.d.ts +24 -0
- package/dist/auth/chatgpt/session.d.ts.map +1 -0
- package/dist/auth/chatgpt/session.js +101 -0
- package/dist/auth/chatgpt/session.js.map +1 -0
- package/dist/auth/chatgpt/store.d.ts +28 -0
- package/dist/auth/chatgpt/store.d.ts.map +1 -0
- package/dist/auth/chatgpt/store.js +75 -0
- package/dist/auth/chatgpt/store.js.map +1 -0
- package/dist/auth/cli.d.ts +2 -0
- package/dist/auth/cli.d.ts.map +1 -0
- package/dist/auth/cli.js +38 -0
- package/dist/auth/cli.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +25 -0
- package/dist/bin.js.map +1 -1
- package/dist/brain/exchange.d.ts.map +1 -1
- package/dist/brain/exchange.js +3 -1
- package/dist/brain/exchange.js.map +1 -1
- package/dist/brain/kg-export.d.ts +1 -1
- package/dist/brain/kg.d.ts +1 -1
- package/dist/brain/kg.d.ts.map +1 -1
- package/dist/brain/kg.js +3 -1
- package/dist/brain/kg.js.map +1 -1
- package/dist/build-metadata.json +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -2
- package/dist/config.js.map +1 -1
- package/dist/delegation/claude.d.ts +28 -0
- package/dist/delegation/claude.d.ts.map +1 -0
- package/dist/delegation/claude.js +107 -0
- package/dist/delegation/claude.js.map +1 -0
- package/dist/delegation/index.d.ts +2 -0
- package/dist/delegation/index.d.ts.map +1 -0
- package/dist/delegation/index.js +2 -0
- package/dist/delegation/index.js.map +1 -0
- package/dist/execution/attribution.d.ts +3 -0
- package/dist/execution/attribution.d.ts.map +1 -1
- package/dist/execution/attribution.js.map +1 -1
- package/dist/execution/delegated.d.ts.map +1 -1
- package/dist/execution/delegated.js +5 -2
- package/dist/execution/delegated.js.map +1 -1
- package/dist/execution/ledger-cli.d.ts.map +1 -1
- package/dist/execution/ledger-cli.js +9 -7
- package/dist/execution/ledger-cli.js.map +1 -1
- package/dist/execution/ledger-server.d.ts +6 -0
- package/dist/execution/ledger-server.d.ts.map +1 -1
- package/dist/execution/ledger-server.js +39 -4
- package/dist/execution/ledger-server.js.map +1 -1
- package/dist/execution/quote.d.ts +1 -1
- package/dist/execution/quote.d.ts.map +1 -1
- package/dist/execution/quote.js +4 -2
- package/dist/execution/quote.js.map +1 -1
- package/dist/execution/remote-ledger.d.ts +7 -0
- package/dist/execution/remote-ledger.d.ts.map +1 -1
- package/dist/execution/remote-ledger.js +22 -5
- package/dist/execution/remote-ledger.js.map +1 -1
- package/dist/health/target.d.ts.map +1 -1
- package/dist/health/target.js +8 -1
- package/dist/health/target.js.map +1 -1
- package/dist/improvement/cli.d.ts +1 -1
- package/dist/improvement/cli.d.ts.map +1 -1
- package/dist/improvement/cli.js +4 -4
- package/dist/improvement/cli.js.map +1 -1
- package/dist/improvement/host-capabilities.d.ts +134 -1
- package/dist/improvement/host-capabilities.d.ts.map +1 -1
- package/dist/improvement/host-capabilities.js +8 -1
- package/dist/improvement/host-capabilities.js.map +1 -1
- package/dist/improvement/index.d.ts +2 -0
- package/dist/improvement/index.d.ts.map +1 -1
- package/dist/improvement/index.js +2 -0
- package/dist/improvement/index.js.map +1 -1
- package/dist/improvement/task-feedback-contract.d.ts +41 -0
- package/dist/improvement/task-feedback-contract.d.ts.map +1 -0
- package/dist/improvement/task-feedback-contract.js +83 -0
- package/dist/improvement/task-feedback-contract.js.map +1 -0
- package/dist/improvement/task-feedback.d.ts +149 -0
- package/dist/improvement/task-feedback.d.ts.map +1 -0
- package/dist/improvement/task-feedback.js +117 -0
- package/dist/improvement/task-feedback.js.map +1 -0
- package/dist/improvement/task-outcomes.d.ts +2 -2
- package/dist/improvement/task-outcomes.d.ts.map +1 -1
- package/dist/improvement/task-outcomes.js +2 -3
- package/dist/improvement/task-outcomes.js.map +1 -1
- package/dist/model-detection.d.ts +0 -5
- package/dist/model-detection.d.ts.map +1 -1
- package/dist/model-detection.js +5 -5
- package/dist/model-detection.js.map +1 -1
- package/dist/orchestration/coordinator-types.d.ts +4 -1
- package/dist/orchestration/coordinator-types.d.ts.map +1 -1
- package/dist/orchestration/execution-journal.d.ts.map +1 -1
- package/dist/orchestration/execution-journal.js +10 -3
- package/dist/orchestration/execution-journal.js.map +1 -1
- package/dist/orchestration/execution.d.ts +3 -1
- package/dist/orchestration/execution.d.ts.map +1 -1
- package/dist/orchestration/execution.js +1 -1
- package/dist/orchestration/execution.js.map +1 -1
- package/dist/orchestration/reviewed-ledger.d.ts +42 -0
- package/dist/orchestration/reviewed-ledger.d.ts.map +1 -1
- package/dist/orchestration/reviewed-ledger.js +51 -9
- package/dist/orchestration/reviewed-ledger.js.map +1 -1
- package/dist/orchestration/routing.d.ts +2 -0
- package/dist/orchestration/routing.d.ts.map +1 -1
- package/dist/orchestration/routing.js +10 -1
- package/dist/orchestration/routing.js.map +1 -1
- package/dist/orchestration/task-configuration.d.ts +8 -0
- package/dist/orchestration/task-configuration.d.ts.map +1 -0
- package/dist/orchestration/task-configuration.js +23 -0
- package/dist/orchestration/task-configuration.js.map +1 -0
- package/dist/providers/chatgpt.d.ts +11 -0
- package/dist/providers/chatgpt.d.ts.map +1 -0
- package/dist/providers/chatgpt.js +156 -0
- package/dist/providers/chatgpt.js.map +1 -0
- package/dist/providers/index.d.ts +0 -5
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +10 -2
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/types.d.ts +5 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/runlog.d.ts +1 -1
- package/dist/runlog.d.ts.map +1 -1
- package/dist/runtime/permissions.d.ts.map +1 -1
- package/dist/runtime/permissions.js +1 -0
- package/dist/runtime/permissions.js.map +1 -1
- package/dist/runtime/turn.d.ts.map +1 -1
- package/dist/runtime/turn.js +79 -12
- package/dist/runtime/turn.js.map +1 -1
- package/dist/sessions/execution-binding.d.ts +8 -3
- package/dist/sessions/execution-binding.d.ts.map +1 -1
- package/dist/sessions/execution-binding.js +13 -3
- package/dist/sessions/execution-binding.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ui/components.d.ts.map +1 -1
- package/dist/ui/components.js +3 -5
- package/dist/ui/components.js.map +1 -1
- package/dist/ui/frame.js +3 -3
- package/dist/ui/frame.js.map +1 -1
- package/dist/ui/modals/tool-output.d.ts.map +1 -1
- package/dist/ui/modals/tool-output.js +5 -6
- package/dist/ui/modals/tool-output.js.map +1 -1
- package/dist/ui/state/use-terminal-width.d.ts.map +1 -1
- package/dist/ui/state/use-terminal-width.js +2 -13
- package/dist/ui/state/use-terminal-width.js.map +1 -1
- package/docs/chatgpt-plan.md +109 -0
- package/docs/claude-plan.md +58 -0
- package/docs/delegation-ledger.md +54 -3
- package/docs/improvement-cycles.md +5 -0
- package/docs/releases/3.8.0.md +65 -0
- package/docs/reviewed-provider-metadata.md +84 -0
- package/docs/task-feedback.md +77 -0
- package/package.json +17 -11
|
@@ -4,8 +4,41 @@ export declare const REVIEWED_LEDGER_CAPABILITY: {
|
|
|
4
4
|
readonly ownerScope: 1;
|
|
5
5
|
readonly tokenVersion: 2;
|
|
6
6
|
readonly reviewedAuthority: 1;
|
|
7
|
+
readonly endpointBinding: 1;
|
|
7
8
|
readonly grants: 'native-admissions-only';
|
|
8
9
|
};
|
|
10
|
+
export declare const REVIEWED_TASK_LEDGER_CAPABILITY: {
|
|
11
|
+
readonly version: 2;
|
|
12
|
+
readonly ownerScope: 1;
|
|
13
|
+
readonly tokenVersion: 2;
|
|
14
|
+
readonly reviewedAuthority: 1;
|
|
15
|
+
readonly taskBinding: 1;
|
|
16
|
+
readonly endpointBinding: 1;
|
|
17
|
+
readonly grants: 'unavailable';
|
|
18
|
+
};
|
|
19
|
+
/** Bind a child to a native start event; this neither dispatches nor takes task ownership. */
|
|
20
|
+
export declare function prepareReviewedTaskLedger(cwd: string, runId: string, taskId: string, attempt: number, maxOutputTokens: number, options?: RunActionOptions): Promise<{
|
|
21
|
+
server: import("node:http").Server<typeof import("node:http").IncomingMessage, typeof import("node:http").ServerResponse>;
|
|
22
|
+
ownerToken: string;
|
|
23
|
+
execution: import("../execution/guard.js").AgentExecution;
|
|
24
|
+
deadline: number;
|
|
25
|
+
capability: {
|
|
26
|
+
readonly version: 1;
|
|
27
|
+
readonly ownerScope: 1;
|
|
28
|
+
readonly tokenVersion: 2;
|
|
29
|
+
readonly reviewedAuthority: 1;
|
|
30
|
+
readonly endpointBinding: 1;
|
|
31
|
+
readonly grants: 'native-admissions-only';
|
|
32
|
+
} | {
|
|
33
|
+
readonly version: 2;
|
|
34
|
+
readonly ownerScope: 1;
|
|
35
|
+
readonly tokenVersion: 2;
|
|
36
|
+
readonly reviewedAuthority: 1;
|
|
37
|
+
readonly taskBinding: 1;
|
|
38
|
+
readonly endpointBinding: 1;
|
|
39
|
+
readonly grants: 'unavailable';
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
9
42
|
/** Returns an unbound server and a private owner token. Only the trusted host listens or delivers credentials. */
|
|
10
43
|
export declare function prepareReviewedLedger(cwd: string, runId: string, agentId: string, maxOutputTokens: number, options?: RunActionOptions): Promise<{
|
|
11
44
|
server: import("node:http").Server<typeof import("node:http").IncomingMessage, typeof import("node:http").ServerResponse>;
|
|
@@ -17,7 +50,16 @@ export declare function prepareReviewedLedger(cwd: string, runId: string, agentI
|
|
|
17
50
|
readonly ownerScope: 1;
|
|
18
51
|
readonly tokenVersion: 2;
|
|
19
52
|
readonly reviewedAuthority: 1;
|
|
53
|
+
readonly endpointBinding: 1;
|
|
20
54
|
readonly grants: 'native-admissions-only';
|
|
55
|
+
} | {
|
|
56
|
+
readonly version: 2;
|
|
57
|
+
readonly ownerScope: 1;
|
|
58
|
+
readonly tokenVersion: 2;
|
|
59
|
+
readonly reviewedAuthority: 1;
|
|
60
|
+
readonly taskBinding: 1;
|
|
61
|
+
readonly endpointBinding: 1;
|
|
62
|
+
readonly grants: 'unavailable';
|
|
21
63
|
};
|
|
22
64
|
}>;
|
|
23
65
|
//# sourceMappingURL=reviewed-ledger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewed-ledger.d.ts","sourceRoot":"","sources":["../../src/orchestration/reviewed-ledger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reviewed-ledger.d.ts","sourceRoot":"","sources":["../../src/orchestration/reviewed-ledger.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAGnD,eAAO,MAAM,0BAA0B;aAAE,OAAO,EAAC,CAAC;aAAC,UAAU,EAAC,CAAC;aAAC,YAAY,EAAC,CAAC;aAAC,iBAAiB,EAAC,CAAC;aAAC,eAAe,EAAC,CAAC;aAAC,MAAM,EAAC,wBAAwB;CAAU,CAAC;AAC/J,eAAO,MAAM,+BAA+B;aAAE,OAAO,EAAC,CAAC;aAAC,UAAU,EAAC,CAAC;aAAC,YAAY,EAAC,CAAC;aAAC,iBAAiB,EAAC,CAAC;aAAC,WAAW,EAAC,CAAC;aAAC,eAAe,EAAC,CAAC;aAAC,MAAM,EAAC,aAAa;CAAU,CAAC;AAgBvK,8FAA8F;AAC9F,wBAAsB,yBAAyB,CAAC,GAAG,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,eAAe,EAAC,MAAM,EAAC,OAAO,GAAC,gBAAmB;;;;;;0BAlBtG,CAAC;6BAAY,CAAC;+BAAc,CAAC;oCAAmB,CAAC;kCAAiB,CAAC;yBAAQ,wBAAwB;;0BAC9F,CAAC;6BAAY,CAAC;+BAAc,CAAC;oCAAmB,CAAC;8BAAa,CAAC;kCAAiB,CAAC;yBAAQ,aAAa;;GAqB3J;AAED,kHAAkH;AAClH,wBAAsB,qBAAqB,CAAC,GAAG,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,eAAe,EAAC,MAAM,EAAC,OAAO,GAAC,gBAAmB;;;;;;0BAzBpF,CAAC;6BAAY,CAAC;+BAAc,CAAC;oCAAmB,CAAC;kCAAiB,CAAC;yBAAQ,wBAAwB;;0BAC9F,CAAC;6BAAY,CAAC;+BAAc,CAAC;oCAAmB,CAAC;8BAAa,CAAC;kCAAiB,CAAC;yBAAQ,aAAa;;GA0B3J"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/** Host an existing reviewed allowance; native graph admission remains the only writer of children. */
|
|
2
2
|
import { dirname, join } from 'node:path';
|
|
3
|
+
import { getProviderNames } from '../config.js';
|
|
4
|
+
import { providerTarget } from '../health/target.js';
|
|
3
5
|
import { canonicalJson, digest } from '../approvals/index.js';
|
|
4
6
|
import { throwIfCancelled } from '../cancellation.js';
|
|
5
|
-
import { accountLineage } from '../execution/authority.js';
|
|
7
|
+
import { accountLineage, identifier, integer } from '../execution/authority.js';
|
|
6
8
|
import { effectiveExecutionManifest } from '../execution/child-grants.js';
|
|
7
9
|
import { createLedgerServer } from '../execution/ledger-server.js';
|
|
8
10
|
import { LedgerServerState, mintLedgerToken } from '../execution/ledger-protocol.js';
|
|
@@ -12,15 +14,49 @@ import { RunStore } from './store.js';
|
|
|
12
14
|
import { ExecutionStore } from './execution-store.js';
|
|
13
15
|
import { agentStopped } from './execution-journal.js';
|
|
14
16
|
import { prepareAgentExecution } from './execution.js';
|
|
15
|
-
import {
|
|
16
|
-
export const REVIEWED_LEDGER_CAPABILITY = { version: 1, ownerScope: 1, tokenVersion: 2, reviewedAuthority: 1, grants: 'native-admissions-only' };
|
|
17
|
+
import { matchesAgentRouting, taskSmartSelection } from './routing.js';
|
|
18
|
+
export const REVIEWED_LEDGER_CAPABILITY = { version: 1, ownerScope: 1, tokenVersion: 2, reviewedAuthority: 1, endpointBinding: 1, grants: 'native-admissions-only' };
|
|
19
|
+
export const REVIEWED_TASK_LEDGER_CAPABILITY = { version: 2, ownerScope: 1, tokenVersion: 2, reviewedAuthority: 1, taskBinding: 1, endpointBinding: 1, grants: 'unavailable' };
|
|
20
|
+
function currentTask(history, taskId, attempt) {
|
|
21
|
+
identifier(taskId);
|
|
22
|
+
integer(attempt, 1, 4);
|
|
23
|
+
const current = history.read(), task = current.state.tasks[taskId];
|
|
24
|
+
const event = [...current.events].reverse().find(event => event.change.type === 'task_started' && event.change.taskId === taskId);
|
|
25
|
+
const owner = [...current.events].reverse().find(event => event.change.type === 'started');
|
|
26
|
+
if (current.state.status !== 'running' || !current.state.ownerId || !task || task.status !== 'running' || task.attempts !== attempt ||
|
|
27
|
+
!owner || owner.change.type !== 'started' || owner.change.ownerId !== current.state.ownerId || !event || event.sequence <= owner.sequence ||
|
|
28
|
+
event.change.type !== 'task_started' || event.change.attempt !== attempt || event.change.requestAttribution !== 1 || event.change.sessionId !== task.sessionId)
|
|
29
|
+
throw new ExecutionLimitError('authority', 'Task requires its current attributed native attempt.');
|
|
30
|
+
return { agentId: task.agentId, ownerId: current.state.ownerId, attribution: { version: 1, kind: 'task', eventId: event.id, eventHash: event.hash,
|
|
31
|
+
sessionId: event.change.sessionId, taskId, attempt } };
|
|
32
|
+
}
|
|
33
|
+
/** Bind a child to a native start event; this neither dispatches nor takes task ownership. */
|
|
34
|
+
export async function prepareReviewedTaskLedger(cwd, runId, taskId, attempt, maxOutputTokens, options = {}) {
|
|
35
|
+
const runs = options.store ?? new RunStore(), view = await runs.read(runId, cwd, options.signal);
|
|
36
|
+
const binding = currentTask(new ExecutionStore(join(runs.root, runId), view.manifest), taskId, attempt);
|
|
37
|
+
return prepareReviewedHost(cwd, runId, binding.agentId, maxOutputTokens, { ...options, store: runs }, binding);
|
|
38
|
+
}
|
|
17
39
|
/** Returns an unbound server and a private owner token. Only the trusted host listens or delivers credentials. */
|
|
18
40
|
export async function prepareReviewedLedger(cwd, runId, agentId, maxOutputTokens, options = {}) {
|
|
19
|
-
|
|
41
|
+
return prepareReviewedHost(cwd, runId, agentId, maxOutputTokens, options);
|
|
42
|
+
}
|
|
43
|
+
async function prepareReviewedHost(cwd, runId, agentId, maxOutputTokens, options, task) {
|
|
44
|
+
const captureTargets = () => Object.fromEntries(getProviderNames().map(provider => [provider, providerTarget(provider).key]));
|
|
45
|
+
const targets = Object.freeze(captureTargets());
|
|
46
|
+
const runs = options.store ?? new RunStore(), execution = await prepareAgentExecution(cwd, runId, agentId, maxOutputTokens, { ...options, store: runs, reviewedProviderTargets: targets });
|
|
20
47
|
const ledger = execution.ledger, view = await runs.read(runId, cwd, options.signal), history = new ExecutionStore(join(runs.root, runId), view.manifest);
|
|
21
|
-
const assertOwner = () => {
|
|
48
|
+
const assertOwner = () => {
|
|
49
|
+
throwIfCancelled(options.signal);
|
|
50
|
+
execution.assertAuthority();
|
|
51
|
+
if (canonicalJson(captureTargets()) !== canonicalJson(targets))
|
|
52
|
+
throw new ExecutionLimitError('authority', 'Reviewed provider endpoint configuration changed.');
|
|
53
|
+
if (task && canonicalJson(currentTask(history, task.attribution.taskId, task.attribution.attempt)) !== canonicalJson(task))
|
|
54
|
+
throw new ExecutionLimitError('authority', 'Native task execution binding changed.');
|
|
55
|
+
};
|
|
22
56
|
const assertAccount = (id) => {
|
|
23
57
|
assertOwner();
|
|
58
|
+
if (task && id !== task.agentId)
|
|
59
|
+
throw new ExecutionLimitError('authority', 'Task endpoint cannot act for another account.');
|
|
24
60
|
const current = history.exists() ? inspectSpawnAuthority(history, ledger) : undefined, context = current?.context ?? view.manifest;
|
|
25
61
|
const agent = context.plan.agents.find(agent => agent.id === id);
|
|
26
62
|
if (!agent || current && agentStopped(current.view.state, context, id))
|
|
@@ -41,17 +77,23 @@ export async function prepareReviewedLedger(cwd, runId, agentId, maxOutputTokens
|
|
|
41
77
|
throw new ExecutionLimitError('deadline', 'Original owner allowance expired.');
|
|
42
78
|
history.create({ version: 1, runId, manifestHash: view.manifest.hash, approvalRevision: view.run.revision, createdAt: new Date(saved.manifest.createdAt).toISOString(), deadline: saved.manifest.deadline });
|
|
43
79
|
assertAccount(agentId);
|
|
44
|
-
const authority = digest(canonicalJson({ version: 1, runId, manifestHash: view.manifest.hash, approvalRevision: view.run.revision
|
|
80
|
+
const authority = digest(canonicalJson({ version: 1, runId, manifestHash: view.manifest.hash, approvalRevision: view.run.revision, providerTargets: targets,
|
|
81
|
+
...(task ? { task: { ...task, maxOutputTokens } } : {}) }));
|
|
45
82
|
const state = new LedgerServerState(join(dirname(ledger.root), `${runId}.ledger-server`));
|
|
46
83
|
const server = createLedgerServer({ ledger, cwd, state, ownerAgentId: agentId, authority, assertAuthority: assertOwner, assertAccountAuthority: assertAccount, assertGrantAuthority: assertGrant,
|
|
84
|
+
...(task ? { taskExecution: { attribution: task.attribution, maxOutputTokens } } : {}),
|
|
47
85
|
assertReservationAuthority: reservation => {
|
|
48
86
|
const agent = assertAccount(reservation.agentId);
|
|
49
|
-
if (
|
|
50
|
-
throw new ExecutionLimitError('authority', 'Request changes
|
|
87
|
+
if (targets[reservation.provider] !== reservation.target)
|
|
88
|
+
throw new ExecutionLimitError('authority', 'Request changes a reviewed provider endpoint.');
|
|
89
|
+
const selection = agent.routing ? taskSmartSelection(agent.routing, history.read().events, task?.attribution.taskId) : undefined;
|
|
90
|
+
if (!matchesAgentRouting(agent, reservation.provider, reservation.model, selection))
|
|
91
|
+
throw new ExecutionLimitError('authority', 'Request exceeds the reviewed provider, model or Smart routing stage.');
|
|
51
92
|
if (reservation.outputTokens > maxOutputTokens)
|
|
52
93
|
throw new ExecutionLimitError('budget', 'Request exceeds the reviewed host output limit.');
|
|
53
94
|
} });
|
|
54
95
|
const ownerToken = mintLedgerToken(state.secret(), { v: 2, authority, run: runId, role: 'parent', owner: agentId, exp: deadline });
|
|
55
|
-
return { server, ownerToken, execution,
|
|
96
|
+
return { server, ownerToken, execution: task ? { ...execution, assertAuthority: assertOwner, attribution: structuredClone(task.attribution) } : execution, deadline,
|
|
97
|
+
capability: task ? REVIEWED_TASK_LEDGER_CAPABILITY : REVIEWED_LEDGER_CAPABILITY };
|
|
56
98
|
}
|
|
57
99
|
//# sourceMappingURL=reviewed-ledger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewed-ledger.js","sourceRoot":"","sources":["../../src/orchestration/reviewed-ledger.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AACvC,OAAO,EAAC,aAAa,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"reviewed-ledger.js","sourceRoot":"","sources":["../../src/orchestration/reviewed-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,8 @@ export interface RecordedAgentRoute {
|
|
|
15
15
|
}
|
|
16
16
|
/** Explicit reviewed choices remain constraints even when a host supplies its own runtime config. */
|
|
17
17
|
export declare function matchesAgentPreference(preference: AgentContract['preference'], provider: string, model: string): boolean;
|
|
18
|
+
/** Match the same reviewed pins and stage pool for native routes and remote admission. */
|
|
19
|
+
export declare function matchesAgentRouting(agent: AgentContract, provider: string, model: string, selection?: SmartRoutingSelection): boolean;
|
|
18
20
|
/** Only a recorded failed check with immutable evidence opens the escalation pool. */
|
|
19
21
|
export declare function taskSmartSelection(policy: SmartRoutingPolicy, events: ExecutionEvent[], taskId?: string): SmartRoutingSelection;
|
|
20
22
|
export declare function validateRecordedRoute(value: unknown, context: RunPlanContext, agentId: string): RecordedAgentRoute;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/orchestration/routing.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,KAAK,kBAAkB,EAAC,KAAK,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AACpH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAC,cAAc,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAG9C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAC,CAAC,CAAC;IAAA,UAAU,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IACvE,OAAO,EAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAAA,KAAK,EAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAAA,UAAU,CAAC,EAAC,MAAM,CAAC;CAC/F;AACD,qGAAqG;AACrG,wBAAgB,sBAAsB,CAAC,UAAU,EAAC,aAAa,CAAC,YAAY,CAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,GAAE,OAAO,CAElH;AACD,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,MAAM,EAAC,kBAAkB,EAAC,MAAM,EAAC,cAAc,EAAE,EAAC,MAAM,CAAC,EAAC,MAAM,GAAE,qBAAqB,CAKzH;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,MAAM,GAAE,kBAAkB,CAW5G;AACD,uFAAuF;AACvF,wBAAsB,gBAAgB,CAAC,KAAK,EAAC,cAAc,EAAC,OAAO,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,EAAC,QAAQ,EAAC,eAAe,EAAC,MAAM,EAAC,WAAW,EAAC,YAAY,EAAC,MAAI,IAAI,EAAC,MAAM,CAAC,EAAC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,CAI1L"}
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/orchestration/routing.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,KAAK,kBAAkB,EAAC,KAAK,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AACpH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAC,cAAc,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAG9C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAC,CAAC,CAAC;IAAA,UAAU,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IACvE,OAAO,EAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAAA,KAAK,EAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAAA,UAAU,CAAC,EAAC,MAAM,CAAC;CAC/F;AACD,qGAAqG;AACrG,wBAAgB,sBAAsB,CAAC,UAAU,EAAC,aAAa,CAAC,YAAY,CAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,GAAE,OAAO,CAElH;AACD,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,SAAS,CAAC,EAAC,qBAAqB,GAAE,OAAO,CAK7H;AACD,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,MAAM,EAAC,kBAAkB,EAAC,MAAM,EAAC,cAAc,EAAE,EAAC,MAAM,CAAC,EAAC,MAAM,GAAE,qBAAqB,CAKzH;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,MAAM,GAAE,kBAAkB,CAW5G;AACD,uFAAuF;AACvF,wBAAsB,gBAAgB,CAAC,KAAK,EAAC,cAAc,EAAC,OAAO,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,EAAC,QAAQ,EAAC,eAAe,EAAC,MAAM,EAAC,WAAW,EAAC,YAAY,EAAC,MAAI,IAAI,EAAC,MAAM,CAAC,EAAC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,CAI1L"}
|
|
@@ -6,6 +6,15 @@ import { shape, text, uuid, fail } from './validation.js';
|
|
|
6
6
|
export function matchesAgentPreference(preference, provider, model) {
|
|
7
7
|
return (preference.provider === 'auto' || preference.provider === provider) && (!preference.model || preference.model === model);
|
|
8
8
|
}
|
|
9
|
+
/** Match the same reviewed pins and stage pool for native routes and remote admission. */
|
|
10
|
+
export function matchesAgentRouting(agent, provider, model, selection) {
|
|
11
|
+
if (!matchesAgentPreference(agent.preference, provider, model))
|
|
12
|
+
return false;
|
|
13
|
+
if (!selection)
|
|
14
|
+
return true;
|
|
15
|
+
const pool = smartPool(selection), preference = agent.preference;
|
|
16
|
+
return !!preference.model || preference.provider !== 'auto' && !pool.some(target => target.provider === preference.provider) || smartTargetMatches(pool, provider, { id: model });
|
|
17
|
+
}
|
|
9
18
|
/** Only a recorded failed check with immutable evidence opens the escalation pool. */
|
|
10
19
|
export function taskSmartSelection(policy, events, taskId) {
|
|
11
20
|
const last = taskId ? [...events].reverse().find(event => event.change.type === 'task_finished' && event.change.taskId === taskId) : undefined;
|
|
@@ -28,7 +37,7 @@ export function validateRecordedRoute(value, context, agentId) {
|
|
|
28
37
|
const preference = agent.preference;
|
|
29
38
|
if (!matchesAgentPreference(preference, value.provider, value.model))
|
|
30
39
|
fail('Routing evidence changed an explicit agent pin.');
|
|
31
|
-
if (!
|
|
40
|
+
if (!matchesAgentRouting(agent, value.provider, value.model, { policy, stage: value.stage }))
|
|
32
41
|
fail('Routing evidence exceeds the reviewed model pool.');
|
|
33
42
|
return value;
|
|
34
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/orchestration/routing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/orchestration/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ProjectPlan } from './types.js';
|
|
2
|
+
import type { ExecutionEvent } from './coordinator-types.js';
|
|
3
|
+
/** Stable attempt configuration from validated history ending at its native start. */
|
|
4
|
+
export declare function taskConfigurationIdentity(plan: ProjectPlan, taskId: string, basePlanHash: string, prefix: ExecutionEvent[]): {
|
|
5
|
+
configurationHash: string;
|
|
6
|
+
graphHash: string;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=task-configuration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-configuration.d.ts","sourceRoot":"","sources":["../../src/orchestration/task-configuration.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,WAAW,EAAC,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AAE3D,sFAAsF;AACtF,wBAAgB,yBAAyB,CAAC,IAAI,EAAC,WAAW,EAAC,MAAM,EAAC,MAAM,EAAC,YAAY,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAE;IAa1G,iBAAiB;IACvB,SAAS;EACZ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { canonicalJson, digest } from '../approvals/index.js';
|
|
2
|
+
import { OrchestrationError } from './types.js';
|
|
3
|
+
/** Stable attempt configuration from validated history ending at its native start. */
|
|
4
|
+
export function taskConfigurationIdentity(plan, taskId, basePlanHash, prefix) {
|
|
5
|
+
const task = plan.tasks.find(t => t.id === taskId), agent = plan.agents.find(a => a.id === task?.agentId);
|
|
6
|
+
if (!task || !agent)
|
|
7
|
+
throw new OrchestrationError('conflict', 'Task configuration is unavailable.');
|
|
8
|
+
const withdrawn = new Set(prefix.flatMap(e => e.change.type === 'supervision_withdrawn' ? [e.change.decisionId] : []));
|
|
9
|
+
let strategy = null;
|
|
10
|
+
for (const event of [...prefix].reverse()) {
|
|
11
|
+
if (event.change.type !== 'supervision_applied' || withdrawn.has(event.change.decisionId))
|
|
12
|
+
continue;
|
|
13
|
+
const decisionId = event.change.decisionId, decision = prefix.find(e => e.id === decisionId);
|
|
14
|
+
if (decision?.change.type === 'supervision_decided' && decision.change.decision.action === 'replan' && decision.change.decision.taskId === taskId) {
|
|
15
|
+
strategy = { decisionId: decision.id, strategy: decision.change.decision.strategy, evidence: [...decision.change.decision.evidence] };
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const graph = [...prefix].reverse().find(e => e.change.type === 'graph_admitted');
|
|
20
|
+
return { configurationHash: digest(canonicalJson({ task, agent, strategy })),
|
|
21
|
+
graphHash: graph?.change.type === 'graph_admitted' ? graph.change.admission.proposal.planHash : basePlanHash };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=task-configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-configuration.js","sourceRoot":"","sources":["../../src/orchestration/task-configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAkB,MAAM,YAAY,CAAC;AAG/D,sFAAsF;AACtF,MAAM,UAAU,yBAAyB,CAAC,IAAgB,EAAC,MAAa,EAAC,YAAmB,EAAC,MAAuB;IAClH,MAAM,IAAI,GAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,MAAM,CAAC,EAAC,KAAK,GAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7F,IAAG,CAAC,IAAI,IAAE,CAAC,KAAK;QAAC,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAC,oCAAoC,CAAC,CAAC;IAC/F,MAAM,SAAS,GAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,MAAM,CAAC,IAAI,KAAG,uBAAuB,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC;IAC7G,IAAI,QAAQ,GAA4D,IAAI,CAAC;IAC7E,KAAI,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC;QACxC,IAAG,KAAK,CAAC,MAAM,CAAC,IAAI,KAAG,qBAAqB,IAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;YAAC,SAAS;QAC9F,MAAM,UAAU,GAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAC,QAAQ,GAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,UAAU,CAAC,CAAC;QACpF,IAAG,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAG,qBAAqB,IAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAG,QAAQ,IAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAG,MAAM,EAAC,CAAC;YACtI,QAAQ,GAAC,EAAC,UAAU,EAAC,QAAQ,CAAC,EAAE,EAAC,QAAQ,EAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAC,QAAQ,EAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAC,CAAC;YAAA,MAAM;QACrI,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAC,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,MAAM,CAAC,IAAI,KAAG,gBAAgB,CAAC,CAAC;IAC5E,OAAO,EAAC,iBAAiB,EAAC,MAAM,CAAC,aAAa,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,CAAC,CAAC;QACpE,SAAS,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,KAAG,gBAAgB,CAAA,CAAC,CAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAA,CAAC,CAAA,YAAY,EAAC,CAAC;AAC3G,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import type { Message, Tool, LLMResponse } from '../types.js';
|
|
3
|
+
import type { ModelInfo } from '../models/index.js';
|
|
4
|
+
import type { AdapterLimits, StreamCallback } from './types.js';
|
|
5
|
+
export declare function chatGPTSelected(): boolean;
|
|
6
|
+
export declare function chatGPTAccountKey(): string;
|
|
7
|
+
export declare function assertChatGPTLimits(limits?: AdapterLimits): void;
|
|
8
|
+
export declare function chatGPTModels(signal?: AbortSignal): Promise<ModelInfo[]>;
|
|
9
|
+
export declare function chatGPTInput(messages: Message[], account?: string, model?: string): OpenAI.Responses.ResponseInput;
|
|
10
|
+
export declare function chatChatGPT(messages: Message[], tools: Tool[], model: string, onToken?: StreamCallback, signal?: AbortSignal, limits?: AdapterLimits): Promise<LLMResponse>;
|
|
11
|
+
//# sourceMappingURL=chatgpt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatgpt.d.ts","sourceRoot":"","sources":["../../src/providers/chatgpt.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAI5B,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAChE,wBAAgB,eAAe,IAAI,OAAO,CAAiG;AAC3I,wBAAgB,iBAAiB,IAAI,MAAM,CAA8F;AACzI,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAIhE;AACD,wBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAa9E;AACD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAuBlH;AAeD,wBAAsB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAmDjL"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import { apiKeyAccessActive, ChatGPTQuotaError, quotaCircuit, openQuotaCircuit } from '../auth/chatgpt/fallback.js';
|
|
3
|
+
import * as config from '../config.js';
|
|
4
|
+
import { ChatGPTStore, accessToken, RESOURCE, ChatGPTAuthError } from '../auth/chatgpt/index.js';
|
|
5
|
+
import { ExecutionLimitError } from '../execution/types.js';
|
|
6
|
+
import { StreamProtocolError } from '../errors.js';
|
|
7
|
+
import { throwIfCancelled } from '../cancellation.js';
|
|
8
|
+
export function chatGPTSelected() { return !apiKeyAccessActive() && config.getProviderCred('openai').accessMethod === 'chatgpt'; }
|
|
9
|
+
export function chatGPTAccountKey() { const a = new ChatGPTStore().active(); return a?.accessToken ? a.clientId : 'signed-out'; }
|
|
10
|
+
export function assertChatGPTLimits(limits) {
|
|
11
|
+
const budget = config.get('budget');
|
|
12
|
+
if (limits?.bounded || limits?.maxOutputTokens !== undefined || budget?.maxCostPerRun !== undefined || budget?.maxCostPerProject !== undefined)
|
|
13
|
+
throw new ExecutionLimitError('authority', 'ChatGPT plan access cannot enforce API dollar budgets or output-token caps. Explicitly select API-key access for bounded runs.');
|
|
14
|
+
}
|
|
15
|
+
export async function chatGPTModels(signal) {
|
|
16
|
+
const credential = await accessToken(undefined, signal);
|
|
17
|
+
const response = await fetch(`${RESOURCE}/models`, { redirect: 'error', headers: { Authorization: `Bearer ${credential.token}` }, signal: signal ? AbortSignal.any([signal, AbortSignal.timeout(30000)]) : AbortSignal.timeout(30000) });
|
|
18
|
+
if (!response.ok) {
|
|
19
|
+
const body = await response.json().catch(() => ({}));
|
|
20
|
+
const failure = subscriptionFailure(body.error?.code, response.status);
|
|
21
|
+
if (failure instanceof ChatGPTQuotaError) {
|
|
22
|
+
await openQuotaCircuit(credential.clientId, failure.reason);
|
|
23
|
+
throw failure;
|
|
24
|
+
}
|
|
25
|
+
throw new ChatGPTAuthError(`ChatGPT model discovery failed (HTTP ${response.status}).`);
|
|
26
|
+
}
|
|
27
|
+
const body = await response.json();
|
|
28
|
+
if (!Array.isArray(body.models))
|
|
29
|
+
throw new ChatGPTAuthError('Invalid ChatGPT model catalog.');
|
|
30
|
+
if (chatGPTAccountKey() !== credential.clientId)
|
|
31
|
+
throw new ChatGPTAuthError('ChatGPT account changed during model discovery.');
|
|
32
|
+
return body.models.filter(m => m.visibility === 'list' && typeof m.slug === 'string' && !!m.slug && typeof m.display_name === 'string').map(m => ({ id: m.slug, name: m.display_name, description: 'ChatGPT plan usage', evidence: { source: 'live', at: new Date().toISOString() } }));
|
|
33
|
+
}
|
|
34
|
+
export function chatGPTInput(messages, account, model) {
|
|
35
|
+
const input = [];
|
|
36
|
+
for (const m of messages) {
|
|
37
|
+
const saved = m.providerMetadata?.openai?.chatgpt;
|
|
38
|
+
if (saved) {
|
|
39
|
+
if (m.role !== 'assistant' || saved.clientId !== account || saved.model !== model || !Array.isArray(saved.output))
|
|
40
|
+
throw new ChatGPTAuthError('ChatGPT history belongs to a different account or model. Start a new session.');
|
|
41
|
+
for (const item of saved.output) {
|
|
42
|
+
if (item.type !== 'message' && item.type !== 'function_call' && item.type !== 'reasoning')
|
|
43
|
+
throw new ChatGPTAuthError('Unsupported ChatGPT history item. Start a new session.');
|
|
44
|
+
input.push(item);
|
|
45
|
+
}
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (m.role === 'tool') {
|
|
49
|
+
if (!m.toolCallId)
|
|
50
|
+
throw new StreamProtocolError('Tool history is missing a call ID.');
|
|
51
|
+
input.push({ type: 'function_call_output', call_id: m.toolCallId, output: typeof m.content === 'string' ? m.content : JSON.stringify(m.content) });
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
const text = typeof m.content === 'string' ? m.content : m.content.filter(b => b.type === 'text').map(b => b.text).join('\n');
|
|
55
|
+
if (m.role === 'user')
|
|
56
|
+
input.push({ role: 'user', content: typeof m.content === 'string' ? m.content : m.content.map(b => b.type === 'text' ? { type: 'input_text', text: b.text } : { type: 'input_image', image_url: `data:${b.mediaType};base64,${b.data}`, detail: 'auto' }) });
|
|
57
|
+
else if (text)
|
|
58
|
+
input.push({ role: m.role === 'system' ? 'developer' : 'assistant', content: text });
|
|
59
|
+
for (const t of m.toolCalls ?? [])
|
|
60
|
+
input.push({ type: 'function_call', namespace: 'calliope', call_id: t.id, name: t.name, arguments: JSON.stringify(t.arguments) });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return input;
|
|
64
|
+
}
|
|
65
|
+
function subscriptionFailure(code, status, partial = false) {
|
|
66
|
+
if (code === 'subscription_sharing_usage_limit_exceeded' || code === 'insufficient_quota')
|
|
67
|
+
return new ChatGPTQuotaError('quota', partial);
|
|
68
|
+
if (status === 429 || code === 'rate_limit_exceeded')
|
|
69
|
+
return new ChatGPTQuotaError('rate-limit', partial);
|
|
70
|
+
const recovery = {
|
|
71
|
+
subscription_sharing_usage_limit_exceeded: 'ChatGPT plan usage limit reached. Wait for the limit to reset or explicitly select another billing method.',
|
|
72
|
+
subscription_sharing_usage_unavailable: 'ChatGPT plan usage is currently unavailable. Check plan settings and retry later.',
|
|
73
|
+
subscription_sharing_unsupported_capability: 'This request uses a capability unsupported by ChatGPT plan access.',
|
|
74
|
+
subscription_sharing_invalid_user: 'ChatGPT could not validate this session. Sign in again.',
|
|
75
|
+
chatpass_v2_scope_not_authorized: 'ChatGPT plan permission is missing. Sign in again and enable plan usage.',
|
|
76
|
+
};
|
|
77
|
+
return new StreamProtocolError(typeof code === 'string' && Object.hasOwn(recovery, code) ? recovery[code] : 'ChatGPT subscription request failed or was incomplete. Check plan availability or sign in again.');
|
|
78
|
+
}
|
|
79
|
+
export async function chatChatGPT(messages, tools, model, onToken, signal, limits) {
|
|
80
|
+
assertChatGPTLimits(limits);
|
|
81
|
+
throwIfCancelled(signal);
|
|
82
|
+
const circuit = quotaCircuit();
|
|
83
|
+
if (circuit)
|
|
84
|
+
throw new ChatGPTQuotaError(circuit.reason);
|
|
85
|
+
const credential = await accessToken(undefined, signal);
|
|
86
|
+
const models = await chatGPTModels(signal);
|
|
87
|
+
if (!models.some(m => m.id === model))
|
|
88
|
+
throw new ChatGPTAuthError('Selected model is not available to this ChatGPT account. Refresh the model picker.');
|
|
89
|
+
if (chatGPTAccountKey() !== credential.clientId)
|
|
90
|
+
throw new ChatGPTAuthError('ChatGPT account changed before inference.');
|
|
91
|
+
const client = new OpenAI({ apiKey: credential.token, baseURL: RESOURCE, maxRetries: 0,
|
|
92
|
+
// Disallow credential forwarding through redirects and suppress SDK debug output.
|
|
93
|
+
fetch: (url, init) => fetch(url, { ...init, redirect: 'error' }), logLevel: 'off' });
|
|
94
|
+
const request = { model, store: false, stream: true, input: chatGPTInput(messages, credential.clientId, model), include: ['reasoning.encrypted_content'],
|
|
95
|
+
...(tools.length ? { tools: [{ type: 'namespace', name: 'calliope', description: 'Calliope AI runtime tools', tools: tools.map(t => ({ type: 'function', name: t.name, description: t.description, parameters: t.parameters, strict: false })) }] } : {}),
|
|
96
|
+
...(limits?.reasoningEffort ? { reasoning: { effort: limits.reasoningEffort } } : {}) };
|
|
97
|
+
let completed;
|
|
98
|
+
let partial = false;
|
|
99
|
+
try {
|
|
100
|
+
const stream = await client.responses.create(request, { signal });
|
|
101
|
+
for await (const event of stream) {
|
|
102
|
+
throwIfCancelled(signal);
|
|
103
|
+
if (event.type === 'response.output_text.delta') {
|
|
104
|
+
partial ||= !!event.delta;
|
|
105
|
+
onToken?.(event.delta);
|
|
106
|
+
}
|
|
107
|
+
if (event.type === 'response.failed' || event.type === 'response.incomplete')
|
|
108
|
+
throw subscriptionFailure(event.response?.error?.code, undefined, partial);
|
|
109
|
+
if (event.type === 'error')
|
|
110
|
+
throw subscriptionFailure(event.code, undefined, partial);
|
|
111
|
+
if (event.type === 'response.completed')
|
|
112
|
+
completed = event.response;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
throwIfCancelled(signal);
|
|
117
|
+
const failure = error instanceof OpenAI.APIError ? subscriptionFailure(error.code, error.status, partial) : error;
|
|
118
|
+
if (failure instanceof ChatGPTQuotaError)
|
|
119
|
+
await openQuotaCircuit(credential.clientId, failure.reason);
|
|
120
|
+
if (failure instanceof StreamProtocolError)
|
|
121
|
+
throw failure;
|
|
122
|
+
throw new StreamProtocolError('ChatGPT subscription request failed. Check your connection, plan limits and sign-in status.');
|
|
123
|
+
}
|
|
124
|
+
throwIfCancelled(signal);
|
|
125
|
+
if (!completed || completed.status !== 'completed')
|
|
126
|
+
throw new StreamProtocolError('ChatGPT stream ended without successful completion.');
|
|
127
|
+
const toolCalls = [];
|
|
128
|
+
let content = '';
|
|
129
|
+
for (const item of completed.output) {
|
|
130
|
+
if (item.type === 'message')
|
|
131
|
+
for (const part of item.content) {
|
|
132
|
+
if (part.type === 'refusal')
|
|
133
|
+
return { content: '', finishReason: 'error', errorCode: 'refusal', billing: 'subscription', usage: completed.usage ? { inputTokens: completed.usage.input_tokens, outputTokens: completed.usage.output_tokens } : undefined };
|
|
134
|
+
if (part.type === 'output_text')
|
|
135
|
+
content += part.text;
|
|
136
|
+
}
|
|
137
|
+
if (item.type === 'function_call') {
|
|
138
|
+
if (item.namespace !== 'calliope' || !tools.some(t => t.name === item.name))
|
|
139
|
+
throw new StreamProtocolError('ChatGPT returned an unknown tool.');
|
|
140
|
+
let args;
|
|
141
|
+
try {
|
|
142
|
+
args = JSON.parse(item.arguments);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
throw new StreamProtocolError('ChatGPT returned malformed tool arguments.');
|
|
146
|
+
}
|
|
147
|
+
if (!args || typeof args !== 'object' || Array.isArray(args))
|
|
148
|
+
throw new StreamProtocolError('ChatGPT returned invalid tool arguments.');
|
|
149
|
+
toolCalls.push({ id: item.call_id, name: item.name, arguments: args });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return { content, providerMetadata: { openai: { chatgpt: { clientId: credential.clientId, model, output: completed.output } } }, ...(toolCalls.length ? { toolCalls } : {}), finishReason: toolCalls.length ? 'tool_use' : 'stop', billing: 'subscription',
|
|
153
|
+
usage: completed.usage ? { inputTokens: completed.usage.input_tokens, outputTokens: completed.usage.output_tokens } : undefined,
|
|
154
|
+
warnings: ['ChatGPT plan usage: USD totals exclude subscription consumption; plan limits are managed by ChatGPT.'] };
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=chatgpt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatgpt.js","sourceRoot":"","sources":["../../src/providers/chatgpt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provider Module - Entry Point
|
|
3
|
-
*
|
|
4
|
-
* Provider selection, routing, and re-exports.
|
|
5
|
-
*/
|
|
6
1
|
import type { Message, Tool, LLMResponse, LLMProvider } from '../types.js';
|
|
7
2
|
import { type StreamCallback, type RetryCallback, type ChatOptions } from './types.js';
|
|
8
3
|
export { deepSeekReasoning, toDeepSeekMessages, MAX_DEEPSEEK_REASONING_BYTES } from './deepseek-reasoning.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EAAuB,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAsB,MAAM,YAAY,CAAC;AAChI,OAAO,EAAC,iBAAiB,EAAC,kBAAkB,EAAC,4BAA4B,EAAC,MAAM,yBAAyB,CAAC;AAY1G;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,EAAE,CAoBrD;AAsBD;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,YAAY,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAIjD;CACF;AA4BD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,WAAW,GAAG,WAAW,CAyBlE;AAED;;GAEG;AACH,wBAAsB,IAAI,CACxB,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,WAAW,CAAC,CAiLtB;AAGD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACxF,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvF,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/providers/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { chatGPTSelected, chatChatGPT, assertChatGPTLimits } from './chatgpt.js';
|
|
1
2
|
/**
|
|
2
3
|
* Provider Module - Entry Point
|
|
3
4
|
*
|
|
@@ -29,7 +30,7 @@ export function getAvailableProviders() {
|
|
|
29
30
|
providers.push('anthropic');
|
|
30
31
|
if (config.getApiKey('google'))
|
|
31
32
|
providers.push('google');
|
|
32
|
-
if (config.getApiKey('openai'))
|
|
33
|
+
if (chatGPTSelected() || config.getApiKey('openai'))
|
|
33
34
|
providers.push('openai');
|
|
34
35
|
if (config.getApiKey('openrouter'))
|
|
35
36
|
providers.push('openrouter');
|
|
@@ -137,6 +138,8 @@ function unavailableMessage(provider) {
|
|
|
137
138
|
export function selectProvider(preferred) {
|
|
138
139
|
if (String(preferred) === 'litellm')
|
|
139
140
|
throw new ProviderUnavailableError(preferred, 'LiteLLM support has been removed. Select a supported provider explicitly; no replacement was chosen.');
|
|
141
|
+
if (preferred === 'openai' && chatGPTSelected())
|
|
142
|
+
return preferred;
|
|
140
143
|
if (preferred !== 'auto') {
|
|
141
144
|
if (preferred === 'ai21')
|
|
142
145
|
throw new ProviderUnavailableError(preferred, unavailableMessage(preferred));
|
|
@@ -178,6 +181,11 @@ export async function chat(provider, messages, tools, model, onToken, onRetry, o
|
|
|
178
181
|
const attemptBudget = options?.attemptBudget;
|
|
179
182
|
const actualProvider = selectProvider(provider);
|
|
180
183
|
const actualModel = model || DEFAULT_MODELS[actualProvider];
|
|
184
|
+
const subscription = actualProvider === 'openai' && chatGPTSelected();
|
|
185
|
+
if (subscription)
|
|
186
|
+
assertChatGPTLimits(limits);
|
|
187
|
+
if (!subscription && messages.some(m => m.providerMetadata?.openai?.chatgpt))
|
|
188
|
+
throw new ExecutionLimitError('authority', 'ChatGPT subscription history requires subscription access. Start a new session to use API-key access.');
|
|
181
189
|
if (bounded && actualProvider === 'openrouter') {
|
|
182
190
|
const ceiling = attemptBudget ? attemptBudget.priceCeiling : options?.priceCeiling;
|
|
183
191
|
openRouterBounds(ceiling);
|
|
@@ -228,7 +236,7 @@ export async function chat(provider, messages, tools, model, onToken, onRetry, o
|
|
|
228
236
|
response = await chatGoogle(messages, backendTools, actualModel, onToken, options?.signal, limits);
|
|
229
237
|
break;
|
|
230
238
|
case 'openai':
|
|
231
|
-
response = await chatOpenAI(messages, backendTools, actualModel, onToken, options?.signal, limits);
|
|
239
|
+
response = await (subscription ? chatChatGPT : chatOpenAI)(messages, backendTools, actualModel, onToken, options?.signal, limits);
|
|
232
240
|
break;
|
|
233
241
|
case 'openrouter':
|
|
234
242
|
case 'together':
|