@ai-ecoverse/slicc-agent 7.4.1 → 7.5.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 +2 -2
- package/dist/agent.js +7 -0
- package/dist/agent.js.map +2 -2
- package/dist/agents.js +2 -2
- package/dist/agents.js.map +2 -2
- package/dist/approvals/index.js +8 -3
- package/dist/approvals/index.js.map +2 -2
- package/dist/approvals/policy.js +2 -2
- package/dist/approvals/policy.js.map +2 -2
- package/dist/approvals/record.js +2 -2
- package/dist/approvals/record.js.map +2 -2
- package/dist/checkpoints.js +4 -0
- package/dist/checkpoints.js.map +2 -2
- package/dist/clock.js +1 -0
- package/dist/clock.js.map +7 -0
- package/dist/codemode/index.js +2 -2
- package/dist/codemode/index.js.map +2 -2
- package/dist/cone.js +2 -2
- package/dist/cone.js.map +2 -2
- package/dist/guests/guard.js +3 -3
- package/dist/guests/guard.js.map +2 -2
- package/dist/guests/review.js +2 -2
- package/dist/guests/review.js.map +2 -2
- package/dist/guests/scoop.js +3 -3
- package/dist/guests/scoop.js.map +2 -2
- package/dist/guests/seats.js +2 -2
- package/dist/guests/seats.js.map +2 -2
- package/dist/guests/tags.js +2 -2
- package/dist/guests/tags.js.map +2 -2
- package/dist/index.js.map +2 -2
- package/dist/licks/boot.js +2 -2
- package/dist/licks/boot.js.map +2 -2
- package/dist/licks/licks.js +2 -2
- package/dist/licks/licks.js.map +2 -2
- package/dist/mcp/allow.js +2 -2
- package/dist/mcp/allow.js.map +2 -2
- package/dist/memory/extract.js +3 -3
- package/dist/memory/extract.js.map +2 -2
- package/dist/scoops/service.js +2 -2
- package/dist/scoops/service.js.map +2 -2
- package/dist/secrets/legacy.js +2 -2
- package/dist/secrets/legacy.js.map +2 -2
- package/dist/selection.js +2 -2
- package/dist/selection.js.map +2 -2
- package/dist/sprinkles/sprinkles.js +2 -2
- package/dist/sprinkles/sprinkles.js.map +2 -2
- package/dist/titles/labels.js +2 -2
- package/dist/titles/labels.js.map +2 -2
- package/dist/types/agent.d.ts +2 -0
- package/dist/types/approvals/index.d.ts +2 -0
- package/dist/types/checkpoints.d.ts +3 -0
- package/dist/types/clock.d.ts +4 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/workflow/run.js +2 -2
- package/dist/workflow/run.js.map +2 -2
- package/package.json +2 -2
package/dist/workflow/run.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/workflow/run.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Context, JsonValue } from '@earendil-works/chord';\nimport { BACKGROUND_CONTEXT, withAbortSignal } from '@earendil-works/chord/context';\nimport type {\n CodemodeHostCall,\n CodemodeOutcome,\n CodemodeResult,\n CodemodeRun,\n CodemodeRunOptions,\n} from '@earendil-works/pi-codemode';\nimport {\n defineDoc,\n defineDocFamily,\n defineTask,\n type TaskRuntime,\n type Tx,\n} from '@earendil-works/pi-durable';\nimport { deltasOnly } from '../checkpoints.ts';\nimport type { InheritedTaint } from '../guests/guard.ts';\nimport type { Spawned } from '../scoops/service.ts';\nimport { MAX_AGENTS } from './script.ts';\nimport {\n type AgentCall,\n cleanup,\n plan,\n StepError,\n type StepHost,\n settle,\n waitReport,\n} from './step.ts';\n\nexport const MAX_LOGS = 200;\nexport const KEPT_RUNS = 50;\n\nexport type RunStatus = 'running' | 'completed' | 'failed' | 'stopped';\n\nexport type RunRecord = {\n id: string;\n name: string;\n description: string;\n cone: string;\n home: string;\n file: string | null;\n source: string;\n budget: number | null;\n concurrency: number;\n status: RunStatus;\n phase: string | null;\n started: number;\n ended: number | null;\n agents: { started: number; done: number; failed: number; running: string[] };\n spent: number;\n logs: string[];\n fromAgent: boolean;\n taints: InheritedTaint[];\n result?: JsonValue;\n error?: string;\n};\n\nexport const WorkflowsDoc = defineDoc<{ runs: Record<string, RunRecord> }>({\n kind: 'slicc.workflows',\n checkpointWhen: deltasOnly,\n version: 1,\n scope: 'session',\n initial: () => ({ runs: {} }),\n});\n\ntype Start = {\n startedAt: number;\n seed: number;\n fingerprint: string | null;\n count: number;\n firstIssued: number | null;\n};\n\nconst StartDoc = defineDoc<Start>({\n kind: 'slicc.workflow.start',\n checkpointWhen: deltasOnly,\n version: 1,\n scope: 'task',\n initial: () => ({ startedAt: 0, seed: 0, fingerprint: null, count: 0, firstIssued: null }),\n});\n\ntype Entry = {\n id: number;\n name: string;\n at: number;\n outcome: JsonValue;\n issuedAfter: number | null;\n};\n\nconst JournalDoc = defineDocFamily<Entry, null>({\n kind: 'slicc.workflow.journal',\n checkpointWhen: deltasOnly,\n version: 1,\n scope: 'task',\n family: true,\n initial: () => ({ id: 0, name: '', at: 0, outcome: null, issuedAfter: null }),\n});\n\ntype Step = { folder: string; task: number; conversation: number };\n\nconst StepDoc = defineDocFamily<Step, null>({\n kind: 'slicc.workflow.step',\n checkpointWhen: deltasOnly,\n version: 1,\n scope: 'task',\n family: true,\n initial: () => ({ folder: '', task: 0, conversation: 0 }),\n});\n\nexport interface Engine {\n start(code: string, options: CodemodeRunOptions): CodemodeRun;\n}\n\nexport interface RunHost extends StepHost {\n engine: () => Engine;\n}\n\ntype Lookup = () => Promise<RunHost>;\ntype RunInput = { code: string };\ntype RunState = { phase: 'start' } | { phase: 'run' };\n\nexport const GLOBALS = [{ name: '__agent' }, { name: '__notify' }];\n\nexport const DIVERGED =\n 'the workflow took another path than before the restart, so it cannot resume';\n\nfunction addLog(record: RunRecord, line: string): void {\n record.logs.push(line);\n if (record.logs.length > MAX_LOGS) record.logs.splice(0, record.logs.length - MAX_LOGS);\n}\n\nexport function noted(record: RunRecord, args: unknown): void {\n const { kind, text } = (args ?? {}) as { kind?: string; text?: unknown };\n const line = String(text ?? '');\n if (kind === 'phase') {\n record.phase = line;\n addLog(record, `phase: ${line}`);\n } else addLog(record, line);\n}\n\nfunction failure(error: unknown): CodemodeOutcome {\n const tokens = error instanceof StepError ? error.outputTokens : 0;\n return {\n ok: false,\n message: error instanceof Error ? error.message : String(error),\n properties: { outputTokens: tokens },\n };\n}\n\nfunction spentOf(outcome: CodemodeOutcome): number {\n const value = outcome.ok ? outcome.value : outcome.properties;\n const tokens = (value as { outputTokens?: unknown } | undefined)?.outputTokens;\n return typeof tokens === 'number' ? tokens : 0;\n}\n\nexport function errorText(result: CodemodeResult): string {\n if (result.ok) return '';\n const { error } = result;\n return error.kind === 'script' ? error.message : `${error.kind}: ${error.message}`;\n}\n\ntype Runtime = TaskRuntime<RunInput, RunState, null, object>;\n\nasync function runOf(tx: Tx, id: string): Promise<RunRecord | undefined> {\n return (await tx.doc(WorkflowsDoc)).runs[id] as RunRecord | undefined;\n}\n\ntype Event =\n | { kind: 'call'; call: CodemodeHostCall }\n | { kind: 'idle'; seq: number; issued: number }\n | { kind: 'started'; fingerprint: string };\n\nexport class Driver {\n readonly id: string;\n readonly host: RunHost;\n readonly runtime: Runtime;\n readonly context: Context;\n readonly controller = new AbortController();\n readonly issued = new Map<number, CodemodeHostCall>();\n readonly steps = new Set<Promise<void>>();\n readonly deferred: CodemodeHostCall[] = [];\n readonly queue: (() => void)[] = [];\n journal: Entry[] = [];\n start: Start = { startedAt: 0, seed: 0, fingerprint: null, count: 0, firstIssued: null };\n record: RunRecord | undefined;\n next = 0;\n idle: { seq: number; issued: number } | null = null;\n agents = 0;\n inflight = 0;\n spent = 0;\n stopped: string | null = null;\n run: CodemodeRun | undefined;\n\n constructor(host: RunHost, runtime: Runtime, context: Context) {\n this.host = host;\n this.runtime = runtime;\n this.context = context;\n this.id = String(runtime.taskId);\n }\n\n get scoped(): Context {\n return withAbortSignal(this.controller.signal, this.context);\n }\n\n get lanes(): number {\n return (this.record as RunRecord).concurrency;\n }\n\n async load(): Promise<void> {\n this.start = (await this.runtime.snapshot(\n StartDoc,\n this.runtime.taskId,\n this.context\n )) as Start;\n this.record = (await this.runtime.snapshot(WorkflowsDoc, this.context))?.runs[this.id];\n if (!this.record) throw new Error('the run is gone');\n this.spent = this.record.spent;\n for (let seq = 1; seq <= this.start.count; seq++) {\n const entry = await this.runtime.snapshot(\n JournalDoc,\n this.runtime.taskId,\n String(seq),\n this.context\n );\n if (!entry) throw new Error(`the run's journal is missing entry ${seq}`);\n this.journal.push(entry);\n }\n }\n\n halt(reason: string): void {\n this.stopped ??= reason;\n this.controller.abort();\n }\n\n replaying(): boolean {\n return this.next < this.journal.length;\n }\n\n deliver(seq: number, at: number, id: number, outcome: CodemodeOutcome): void {\n if (this.run && !this.run.finished) this.run.deliver(seq, at, id, outcome);\n }\n\n expected(): number | null {\n return this.next === 0\n ? this.start.firstIssued\n : (this.journal[this.next - 1] as Entry).issuedAfter;\n }\n\n pump(): void {\n while (this.replaying()) {\n if (this.idle?.seq !== this.next) return;\n const entry = this.journal[this.next] as Entry;\n const expected = this.expected();\n const call = this.issued.get(entry.id);\n if ((expected !== null && this.idle.issued !== expected) || call?.name !== entry.name) {\n this.halt(DIVERGED);\n return;\n }\n this.next++;\n this.deliver(this.next, entry.at, entry.id, entry.outcome as CodemodeOutcome);\n }\n for (const call of this.deferred.splice(0)) this.launch(call);\n }\n\n handle(event: Event): void {\n if (event.kind === 'started') {\n void this.fingerprint(event.fingerprint).catch(() => undefined);\n return;\n }\n if (event.kind === 'idle') {\n this.idle = { seq: event.seq, issued: event.issued };\n void this.acknowledge(event.seq, event.issued).catch(() => undefined);\n this.pump();\n return;\n }\n this.issued.set(event.call.id, event.call);\n if (event.call.name === '__agent') this.agents++;\n if (!this.replaying()) this.launch(event.call);\n else if (!this.journal.some((entry) => entry.id === event.call.id))\n this.deferred.push(event.call);\n }\n\n async acknowledge(seq: number, issued: number): Promise<void> {\n if (seq === 0 && this.start.firstIssued !== null) return;\n if (seq > 0 && seq <= this.journal.length) return;\n await this.runtime.commit(async (tx) => {\n if (seq === 0) (await tx.doc(StartDoc, this.runtime.taskId)).firstIssued = issued;\n else (await tx.doc(JournalDoc, this.runtime.taskId, String(seq), null)).issuedAfter = issued;\n return undefined;\n }, this.scoped);\n }\n\n launch(call: CodemodeHostCall): void {\n const step = this.live(call).catch((error) => {\n if (!this.controller.signal.aborted) this.halt((error as Error).message);\n });\n this.steps.add(step);\n void step.finally(() => this.steps.delete(step));\n }\n\n async journalize(\n call: CodemodeHostCall,\n outcome: CodemodeOutcome,\n effect: (record: RunRecord) => void\n ): Promise<void> {\n const at = this.runtime.now();\n let seq = 0;\n await this.runtime.commit(async (tx) => {\n const start = await tx.doc(StartDoc, this.runtime.taskId);\n start.count += 1;\n seq = start.count;\n Object.assign(await tx.doc(JournalDoc, this.runtime.taskId, String(seq), null), {\n id: call.id,\n name: call.name,\n at,\n outcome: outcome as JsonValue,\n issuedAfter: null,\n });\n const record = await runOf(tx, this.id);\n if (record) effect(record);\n return undefined;\n }, this.scoped);\n this.deliver(seq, at, call.id, outcome);\n }\n\n refused(): string | null {\n if (this.agents > MAX_AGENTS) return `agent(): a workflow starts at most ${MAX_AGENTS} agents`;\n const { budget } = this.record as RunRecord;\n if (budget !== null && this.spent >= budget)\n return `agent(): the budget of ${budget} output tokens is spent`;\n return null;\n }\n\n async admit(): Promise<void> {\n if (this.inflight < this.lanes) {\n this.inflight++;\n return;\n }\n await new Promise<void>((resume) => this.queue.push(resume));\n }\n\n free(): void {\n const next = this.queue.shift();\n if (next) next();\n else this.inflight--;\n }\n\n async live(call: CodemodeHostCall): Promise<void> {\n if (call.name !== '__agent')\n return this.journalize(call, { ok: true, value: null }, (record) => noted(record, call.args));\n if (this.agents > MAX_AGENTS)\n return this.journalize(call, { ok: false, message: this.refused() as string }, () => {});\n await this.admit();\n const refused = this.refused();\n let outcome: CodemodeOutcome;\n if (refused) outcome = { ok: false, message: refused };\n else\n try {\n outcome = { ok: true, value: await this.step(call) };\n } catch (error) {\n if (this.controller.signal.aborted) {\n this.free();\n throw error;\n }\n outcome = failure(error);\n }\n const tokens = spentOf(outcome);\n this.spent += tokens;\n this.free();\n return this.journalize(call, outcome, (record) => {\n record.spent += tokens;\n if (refused) return;\n if (outcome.ok) record.agents.done++;\n else record.agents.failed++;\n });\n }\n\n created(call: CodemodeHostCall) {\n return async (tx: Tx, made: Spawned) => {\n Object.assign(await tx.doc(StepDoc, this.runtime.taskId, String(call.id), null), {\n folder: made.folder,\n task: made.tasks[0] as number,\n conversation: made.conversation,\n });\n const current = await runOf(tx, this.id);\n if (current) {\n current.agents.started++;\n current.agents.running.push(`scoop:${made.folder}`);\n }\n };\n }\n\n async spawn(call: CodemodeHostCall, planned: ReturnType<typeof plan>, limits: object) {\n const record = this.record as RunRecord;\n const answer = await this.host.scoops.spawn(\n {\n cone: record.cone,\n kind: 'sync',\n target: null,\n asker: null,\n name: planned.name,\n ...(planned.role ? { role: planned.role } : {}),\n ...(planned.model ? { model: planned.model } : {}),\n ...(planned.thinking ? { thinking: planned.thinking as never } : {}),\n prompts: [planned.prompt],\n fromAgent: record.fromAgent,\n request: `workflow:${this.id}:${call.id}`,\n limits: limits as never,\n taints: record.taints,\n created: this.created(call),\n },\n this.scoped\n );\n if (answer.code !== 0) throw new StepError(answer.out.trim().replace(/^subagent: /, ''));\n return { folder: answer.out.trim(), task: (answer.tasks as number[])[0] as number };\n }\n\n async step(call: CodemodeHostCall): Promise<JsonValue> {\n const host = this.host;\n const roles = await host.roles(this.scoped);\n const planned = plan(call.args as AgentCall, roles);\n const kept = await this.runtime.snapshot(\n StepDoc,\n this.runtime.taskId,\n String(call.id),\n this.scoped\n );\n const step = kept ?? (await this.spawn(call, planned, roles.limits));\n const scoop = `scoop:${step.folder}`;\n try {\n const done = await settle(\n host,\n step.folder,\n step.task,\n planned,\n (task) => waitReport((id, using) => this.runtime.waitForTask(id, using), task, this.scoped),\n this.scoped\n );\n return { value: done.value, outputTokens: done.outputTokens } as unknown as JsonValue;\n } finally {\n await cleanup(host, step.folder);\n await this.runtime\n .commit(async (tx) => {\n const current = await runOf(tx, this.id);\n if (current)\n current.agents.running = current.agents.running.filter((name) => name !== scoop);\n return undefined;\n }, BACKGROUND_CONTEXT)\n .catch(() => undefined);\n }\n }\n\n async fingerprint(value: string): Promise<void> {\n if (this.start.fingerprint === value) return;\n if (this.start.fingerprint !== null) {\n this.halt('the sandbox changed since the run started, so it cannot resume');\n return;\n }\n await this.runtime.commit(async (tx) => {\n (await tx.doc(StartDoc, this.runtime.taskId)).fingerprint = value;\n return undefined;\n }, this.scoped);\n }\n\n async execute(code: string): Promise<CodemodeResult> {\n const abort = () => this.controller.abort();\n this.runtime.signal.addEventListener('abort', abort, { once: true });\n this.context.abortSignal?.addEventListener('abort', abort, { once: true });\n const early: Event[] = [];\n let ready = false;\n const emit = (event: Event) => {\n if (ready) this.handle(event);\n else early.push(event);\n };\n const run = this.host.engine().start(code, {\n startedAt: this.start.startedAt,\n seed: this.start.seed,\n globals: GLOBALS,\n signal: this.controller.signal,\n onStarted: (fingerprint) => emit({ kind: 'started', fingerprint }),\n onCall: (call) => emit({ kind: 'call', call }),\n onIdle: (seq, issued) => emit({ kind: 'idle', seq, issued }),\n });\n this.run = run;\n ready = true;\n for (const event of early.splice(0)) this.handle(event);\n const result = await run.result;\n if (this.replaying()) this.halt(DIVERGED);\n this.controller.abort();\n await Promise.allSettled([...this.steps]);\n return result;\n }\n}\n\nfunction seed(): number {\n return crypto.getRandomValues(new Uint32Array(1))[0] as number;\n}\n\nasync function finish(\n runtime: Runtime,\n driver: Driver,\n result: CodemodeResult,\n context: Context\n): Promise<void> {\n const error = driver.stopped ?? (result.ok ? null : errorText(result));\n await runtime.commit(async (tx) => {\n const record = await runOf(tx, String(runtime.taskId));\n if (record) {\n record.status = error === null ? 'completed' : 'failed';\n record.ended = runtime.now();\n record.agents.running = [];\n if (error === null) record.result = (result.ok ? (result.value ?? null) : null) as never;\n else record.error = error;\n }\n return { status: 'terminal', outcome: { status: 'completed', result: null } };\n }, context);\n}\n\nexport function runTask(lookup: Lookup) {\n return defineTask<RunInput, RunState, null>({\n name: 'slicc.workflow-run',\n version: 1,\n initial: () => ({ phase: 'start' }),\n phases: {\n start: (_task, runtime, context) =>\n runtime.commit(async (tx) => {\n Object.assign(await tx.doc(StartDoc, runtime.taskId), {\n startedAt: runtime.now(),\n seed: seed(),\n });\n return { status: 'running', checkpoint: { phase: 'run' } };\n }, context),\n async run(task, runtime, context) {\n const driver = new Driver(await lookup(), runtime, context);\n await driver.load();\n const result = await driver.execute(task.input.code);\n if (runtime.signal.aborted || context.abortSignal?.aborted) return;\n await finish(runtime, driver, result, context);\n },\n },\n async abort(_task, runtime, context) {\n const host = await lookup();\n const id = String(runtime.taskId);\n const record = (await runtime.snapshot(WorkflowsDoc, context))?.runs[id];\n for (const scoop of record?.agents.running ?? [])\n await cleanup(host, scoop.slice('scoop:'.length));\n await runtime.commit(async (tx) => {\n const current = await runOf(tx, id);\n if (current) {\n current.status = 'stopped';\n current.ended = runtime.now();\n current.agents.running = [];\n }\n return { status: 'terminal', outcome: { status: 'aborted' } };\n }, context);\n },\n });\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import type { Context, JsonValue } from '@earendil-works/chord';\nimport { BACKGROUND_CONTEXT, withAbortSignal } from '@earendil-works/chord/context';\nimport type {\n CodemodeHostCall,\n CodemodeOutcome,\n CodemodeResult,\n CodemodeRun,\n CodemodeRunOptions,\n} from '@earendil-works/pi-codemode';\nimport {\n defineDoc,\n defineDocFamily,\n defineTask,\n type TaskRuntime,\n type Tx,\n} from '@earendil-works/pi-durable';\nimport { boundedDeltas, deltasOnly } from '../checkpoints.ts';\nimport type { InheritedTaint } from '../guests/guard.ts';\nimport type { Spawned } from '../scoops/service.ts';\nimport { MAX_AGENTS } from './script.ts';\nimport {\n type AgentCall,\n cleanup,\n plan,\n StepError,\n type StepHost,\n settle,\n waitReport,\n} from './step.ts';\n\nexport const MAX_LOGS = 200;\nexport const KEPT_RUNS = 50;\n\nexport type RunStatus = 'running' | 'completed' | 'failed' | 'stopped';\n\nexport type RunRecord = {\n id: string;\n name: string;\n description: string;\n cone: string;\n home: string;\n file: string | null;\n source: string;\n budget: number | null;\n concurrency: number;\n status: RunStatus;\n phase: string | null;\n started: number;\n ended: number | null;\n agents: { started: number; done: number; failed: number; running: string[] };\n spent: number;\n logs: string[];\n fromAgent: boolean;\n taints: InheritedTaint[];\n result?: JsonValue;\n error?: string;\n};\n\nexport const WorkflowsDoc = defineDoc<{ runs: Record<string, RunRecord> }>({\n kind: 'slicc.workflows',\n checkpointWhen: boundedDeltas,\n version: 1,\n scope: 'session',\n initial: () => ({ runs: {} }),\n});\n\ntype Start = {\n startedAt: number;\n seed: number;\n fingerprint: string | null;\n count: number;\n firstIssued: number | null;\n};\n\nconst StartDoc = defineDoc<Start>({\n kind: 'slicc.workflow.start',\n checkpointWhen: deltasOnly,\n version: 1,\n scope: 'task',\n initial: () => ({ startedAt: 0, seed: 0, fingerprint: null, count: 0, firstIssued: null }),\n});\n\ntype Entry = {\n id: number;\n name: string;\n at: number;\n outcome: JsonValue;\n issuedAfter: number | null;\n};\n\nconst JournalDoc = defineDocFamily<Entry, null>({\n kind: 'slicc.workflow.journal',\n checkpointWhen: deltasOnly,\n version: 1,\n scope: 'task',\n family: true,\n initial: () => ({ id: 0, name: '', at: 0, outcome: null, issuedAfter: null }),\n});\n\ntype Step = { folder: string; task: number; conversation: number };\n\nconst StepDoc = defineDocFamily<Step, null>({\n kind: 'slicc.workflow.step',\n checkpointWhen: deltasOnly,\n version: 1,\n scope: 'task',\n family: true,\n initial: () => ({ folder: '', task: 0, conversation: 0 }),\n});\n\nexport interface Engine {\n start(code: string, options: CodemodeRunOptions): CodemodeRun;\n}\n\nexport interface RunHost extends StepHost {\n engine: () => Engine;\n}\n\ntype Lookup = () => Promise<RunHost>;\ntype RunInput = { code: string };\ntype RunState = { phase: 'start' } | { phase: 'run' };\n\nexport const GLOBALS = [{ name: '__agent' }, { name: '__notify' }];\n\nexport const DIVERGED =\n 'the workflow took another path than before the restart, so it cannot resume';\n\nfunction addLog(record: RunRecord, line: string): void {\n record.logs.push(line);\n if (record.logs.length > MAX_LOGS) record.logs.splice(0, record.logs.length - MAX_LOGS);\n}\n\nexport function noted(record: RunRecord, args: unknown): void {\n const { kind, text } = (args ?? {}) as { kind?: string; text?: unknown };\n const line = String(text ?? '');\n if (kind === 'phase') {\n record.phase = line;\n addLog(record, `phase: ${line}`);\n } else addLog(record, line);\n}\n\nfunction failure(error: unknown): CodemodeOutcome {\n const tokens = error instanceof StepError ? error.outputTokens : 0;\n return {\n ok: false,\n message: error instanceof Error ? error.message : String(error),\n properties: { outputTokens: tokens },\n };\n}\n\nfunction spentOf(outcome: CodemodeOutcome): number {\n const value = outcome.ok ? outcome.value : outcome.properties;\n const tokens = (value as { outputTokens?: unknown } | undefined)?.outputTokens;\n return typeof tokens === 'number' ? tokens : 0;\n}\n\nexport function errorText(result: CodemodeResult): string {\n if (result.ok) return '';\n const { error } = result;\n return error.kind === 'script' ? error.message : `${error.kind}: ${error.message}`;\n}\n\ntype Runtime = TaskRuntime<RunInput, RunState, null, object>;\n\nasync function runOf(tx: Tx, id: string): Promise<RunRecord | undefined> {\n return (await tx.doc(WorkflowsDoc)).runs[id] as RunRecord | undefined;\n}\n\ntype Event =\n | { kind: 'call'; call: CodemodeHostCall }\n | { kind: 'idle'; seq: number; issued: number }\n | { kind: 'started'; fingerprint: string };\n\nexport class Driver {\n readonly id: string;\n readonly host: RunHost;\n readonly runtime: Runtime;\n readonly context: Context;\n readonly controller = new AbortController();\n readonly issued = new Map<number, CodemodeHostCall>();\n readonly steps = new Set<Promise<void>>();\n readonly deferred: CodemodeHostCall[] = [];\n readonly queue: (() => void)[] = [];\n journal: Entry[] = [];\n start: Start = { startedAt: 0, seed: 0, fingerprint: null, count: 0, firstIssued: null };\n record: RunRecord | undefined;\n next = 0;\n idle: { seq: number; issued: number } | null = null;\n agents = 0;\n inflight = 0;\n spent = 0;\n stopped: string | null = null;\n run: CodemodeRun | undefined;\n\n constructor(host: RunHost, runtime: Runtime, context: Context) {\n this.host = host;\n this.runtime = runtime;\n this.context = context;\n this.id = String(runtime.taskId);\n }\n\n get scoped(): Context {\n return withAbortSignal(this.controller.signal, this.context);\n }\n\n get lanes(): number {\n return (this.record as RunRecord).concurrency;\n }\n\n async load(): Promise<void> {\n this.start = (await this.runtime.snapshot(\n StartDoc,\n this.runtime.taskId,\n this.context\n )) as Start;\n this.record = (await this.runtime.snapshot(WorkflowsDoc, this.context))?.runs[this.id];\n if (!this.record) throw new Error('the run is gone');\n this.spent = this.record.spent;\n for (let seq = 1; seq <= this.start.count; seq++) {\n const entry = await this.runtime.snapshot(\n JournalDoc,\n this.runtime.taskId,\n String(seq),\n this.context\n );\n if (!entry) throw new Error(`the run's journal is missing entry ${seq}`);\n this.journal.push(entry);\n }\n }\n\n halt(reason: string): void {\n this.stopped ??= reason;\n this.controller.abort();\n }\n\n replaying(): boolean {\n return this.next < this.journal.length;\n }\n\n deliver(seq: number, at: number, id: number, outcome: CodemodeOutcome): void {\n if (this.run && !this.run.finished) this.run.deliver(seq, at, id, outcome);\n }\n\n expected(): number | null {\n return this.next === 0\n ? this.start.firstIssued\n : (this.journal[this.next - 1] as Entry).issuedAfter;\n }\n\n pump(): void {\n while (this.replaying()) {\n if (this.idle?.seq !== this.next) return;\n const entry = this.journal[this.next] as Entry;\n const expected = this.expected();\n const call = this.issued.get(entry.id);\n if ((expected !== null && this.idle.issued !== expected) || call?.name !== entry.name) {\n this.halt(DIVERGED);\n return;\n }\n this.next++;\n this.deliver(this.next, entry.at, entry.id, entry.outcome as CodemodeOutcome);\n }\n for (const call of this.deferred.splice(0)) this.launch(call);\n }\n\n handle(event: Event): void {\n if (event.kind === 'started') {\n void this.fingerprint(event.fingerprint).catch(() => undefined);\n return;\n }\n if (event.kind === 'idle') {\n this.idle = { seq: event.seq, issued: event.issued };\n void this.acknowledge(event.seq, event.issued).catch(() => undefined);\n this.pump();\n return;\n }\n this.issued.set(event.call.id, event.call);\n if (event.call.name === '__agent') this.agents++;\n if (!this.replaying()) this.launch(event.call);\n else if (!this.journal.some((entry) => entry.id === event.call.id))\n this.deferred.push(event.call);\n }\n\n async acknowledge(seq: number, issued: number): Promise<void> {\n if (seq === 0 && this.start.firstIssued !== null) return;\n if (seq > 0 && seq <= this.journal.length) return;\n await this.runtime.commit(async (tx) => {\n if (seq === 0) (await tx.doc(StartDoc, this.runtime.taskId)).firstIssued = issued;\n else (await tx.doc(JournalDoc, this.runtime.taskId, String(seq), null)).issuedAfter = issued;\n return undefined;\n }, this.scoped);\n }\n\n launch(call: CodemodeHostCall): void {\n const step = this.live(call).catch((error) => {\n if (!this.controller.signal.aborted) this.halt((error as Error).message);\n });\n this.steps.add(step);\n void step.finally(() => this.steps.delete(step));\n }\n\n async journalize(\n call: CodemodeHostCall,\n outcome: CodemodeOutcome,\n effect: (record: RunRecord) => void\n ): Promise<void> {\n const at = this.runtime.now();\n let seq = 0;\n await this.runtime.commit(async (tx) => {\n const start = await tx.doc(StartDoc, this.runtime.taskId);\n start.count += 1;\n seq = start.count;\n Object.assign(await tx.doc(JournalDoc, this.runtime.taskId, String(seq), null), {\n id: call.id,\n name: call.name,\n at,\n outcome: outcome as JsonValue,\n issuedAfter: null,\n });\n const record = await runOf(tx, this.id);\n if (record) effect(record);\n return undefined;\n }, this.scoped);\n this.deliver(seq, at, call.id, outcome);\n }\n\n refused(): string | null {\n if (this.agents > MAX_AGENTS) return `agent(): a workflow starts at most ${MAX_AGENTS} agents`;\n const { budget } = this.record as RunRecord;\n if (budget !== null && this.spent >= budget)\n return `agent(): the budget of ${budget} output tokens is spent`;\n return null;\n }\n\n async admit(): Promise<void> {\n if (this.inflight < this.lanes) {\n this.inflight++;\n return;\n }\n await new Promise<void>((resume) => this.queue.push(resume));\n }\n\n free(): void {\n const next = this.queue.shift();\n if (next) next();\n else this.inflight--;\n }\n\n async live(call: CodemodeHostCall): Promise<void> {\n if (call.name !== '__agent')\n return this.journalize(call, { ok: true, value: null }, (record) => noted(record, call.args));\n if (this.agents > MAX_AGENTS)\n return this.journalize(call, { ok: false, message: this.refused() as string }, () => {});\n await this.admit();\n const refused = this.refused();\n let outcome: CodemodeOutcome;\n if (refused) outcome = { ok: false, message: refused };\n else\n try {\n outcome = { ok: true, value: await this.step(call) };\n } catch (error) {\n if (this.controller.signal.aborted) {\n this.free();\n throw error;\n }\n outcome = failure(error);\n }\n const tokens = spentOf(outcome);\n this.spent += tokens;\n this.free();\n return this.journalize(call, outcome, (record) => {\n record.spent += tokens;\n if (refused) return;\n if (outcome.ok) record.agents.done++;\n else record.agents.failed++;\n });\n }\n\n created(call: CodemodeHostCall) {\n return async (tx: Tx, made: Spawned) => {\n Object.assign(await tx.doc(StepDoc, this.runtime.taskId, String(call.id), null), {\n folder: made.folder,\n task: made.tasks[0] as number,\n conversation: made.conversation,\n });\n const current = await runOf(tx, this.id);\n if (current) {\n current.agents.started++;\n current.agents.running.push(`scoop:${made.folder}`);\n }\n };\n }\n\n async spawn(call: CodemodeHostCall, planned: ReturnType<typeof plan>, limits: object) {\n const record = this.record as RunRecord;\n const answer = await this.host.scoops.spawn(\n {\n cone: record.cone,\n kind: 'sync',\n target: null,\n asker: null,\n name: planned.name,\n ...(planned.role ? { role: planned.role } : {}),\n ...(planned.model ? { model: planned.model } : {}),\n ...(planned.thinking ? { thinking: planned.thinking as never } : {}),\n prompts: [planned.prompt],\n fromAgent: record.fromAgent,\n request: `workflow:${this.id}:${call.id}`,\n limits: limits as never,\n taints: record.taints,\n created: this.created(call),\n },\n this.scoped\n );\n if (answer.code !== 0) throw new StepError(answer.out.trim().replace(/^subagent: /, ''));\n return { folder: answer.out.trim(), task: (answer.tasks as number[])[0] as number };\n }\n\n async step(call: CodemodeHostCall): Promise<JsonValue> {\n const host = this.host;\n const roles = await host.roles(this.scoped);\n const planned = plan(call.args as AgentCall, roles);\n const kept = await this.runtime.snapshot(\n StepDoc,\n this.runtime.taskId,\n String(call.id),\n this.scoped\n );\n const step = kept ?? (await this.spawn(call, planned, roles.limits));\n const scoop = `scoop:${step.folder}`;\n try {\n const done = await settle(\n host,\n step.folder,\n step.task,\n planned,\n (task) => waitReport((id, using) => this.runtime.waitForTask(id, using), task, this.scoped),\n this.scoped\n );\n return { value: done.value, outputTokens: done.outputTokens } as unknown as JsonValue;\n } finally {\n await cleanup(host, step.folder);\n await this.runtime\n .commit(async (tx) => {\n const current = await runOf(tx, this.id);\n if (current)\n current.agents.running = current.agents.running.filter((name) => name !== scoop);\n return undefined;\n }, BACKGROUND_CONTEXT)\n .catch(() => undefined);\n }\n }\n\n async fingerprint(value: string): Promise<void> {\n if (this.start.fingerprint === value) return;\n if (this.start.fingerprint !== null) {\n this.halt('the sandbox changed since the run started, so it cannot resume');\n return;\n }\n await this.runtime.commit(async (tx) => {\n (await tx.doc(StartDoc, this.runtime.taskId)).fingerprint = value;\n return undefined;\n }, this.scoped);\n }\n\n async execute(code: string): Promise<CodemodeResult> {\n const abort = () => this.controller.abort();\n this.runtime.signal.addEventListener('abort', abort, { once: true });\n this.context.abortSignal?.addEventListener('abort', abort, { once: true });\n const early: Event[] = [];\n let ready = false;\n const emit = (event: Event) => {\n if (ready) this.handle(event);\n else early.push(event);\n };\n const run = this.host.engine().start(code, {\n startedAt: this.start.startedAt,\n seed: this.start.seed,\n globals: GLOBALS,\n signal: this.controller.signal,\n onStarted: (fingerprint) => emit({ kind: 'started', fingerprint }),\n onCall: (call) => emit({ kind: 'call', call }),\n onIdle: (seq, issued) => emit({ kind: 'idle', seq, issued }),\n });\n this.run = run;\n ready = true;\n for (const event of early.splice(0)) this.handle(event);\n const result = await run.result;\n if (this.replaying()) this.halt(DIVERGED);\n this.controller.abort();\n await Promise.allSettled([...this.steps]);\n return result;\n }\n}\n\nfunction seed(): number {\n return crypto.getRandomValues(new Uint32Array(1))[0] as number;\n}\n\nasync function finish(\n runtime: Runtime,\n driver: Driver,\n result: CodemodeResult,\n context: Context\n): Promise<void> {\n const error = driver.stopped ?? (result.ok ? null : errorText(result));\n await runtime.commit(async (tx) => {\n const record = await runOf(tx, String(runtime.taskId));\n if (record) {\n record.status = error === null ? 'completed' : 'failed';\n record.ended = runtime.now();\n record.agents.running = [];\n if (error === null) record.result = (result.ok ? (result.value ?? null) : null) as never;\n else record.error = error;\n }\n return { status: 'terminal', outcome: { status: 'completed', result: null } };\n }, context);\n}\n\nexport function runTask(lookup: Lookup) {\n return defineTask<RunInput, RunState, null>({\n name: 'slicc.workflow-run',\n version: 1,\n initial: () => ({ phase: 'start' }),\n phases: {\n start: (_task, runtime, context) =>\n runtime.commit(async (tx) => {\n Object.assign(await tx.doc(StartDoc, runtime.taskId), {\n startedAt: runtime.now(),\n seed: seed(),\n });\n return { status: 'running', checkpoint: { phase: 'run' } };\n }, context),\n async run(task, runtime, context) {\n const driver = new Driver(await lookup(), runtime, context);\n await driver.load();\n const result = await driver.execute(task.input.code);\n if (runtime.signal.aborted || context.abortSignal?.aborted) return;\n await finish(runtime, driver, result, context);\n },\n },\n async abort(_task, runtime, context) {\n const host = await lookup();\n const id = String(runtime.taskId);\n const record = (await runtime.snapshot(WorkflowsDoc, context))?.runs[id];\n for (const scoop of record?.agents.running ?? [])\n await cleanup(host, scoop.slice('scoop:'.length));\n await runtime.commit(async (tx) => {\n const current = await runOf(tx, id);\n if (current) {\n current.status = 'stopped';\n current.ended = runtime.now();\n current.agents.running = [];\n }\n return { status: 'terminal', outcome: { status: 'aborted' } };\n }, context);\n },\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-agent",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.0",
|
|
4
4
|
"description": "SLICC's agent core on pi durable: an agent worker, session storage, remoting and pi extensions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"release": "semantic-release"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@ai-ecoverse/slicc-kernel": "1.147.
|
|
68
|
+
"@ai-ecoverse/slicc-kernel": "1.147.5",
|
|
69
69
|
"@ai-ecoverse/slicc-scrub": "1.0.0",
|
|
70
70
|
"@ai-ecoverse/slicc-shared-web": "2.10.4",
|
|
71
71
|
"@ai-ecoverse/slicc-spectrum": "1.107.1",
|