@ai-ecoverse/slicc-agent 7.6.1 → 7.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.js +3 -1
- package/dist/agent.js.map +2 -2
- package/dist/timings.js +12 -2
- package/dist/timings.js.map +2 -2
- package/dist/types/timings.d.ts +7 -1
- package/package.json +2 -2
package/dist/agent.js
CHANGED
|
@@ -43,7 +43,9 @@ async function openAgent(options) {
|
|
|
43
43
|
const scooped = scoopReviews();
|
|
44
44
|
registry.install(scooped.extension);
|
|
45
45
|
const reports = createReports();
|
|
46
|
-
const timings = createTimings(
|
|
46
|
+
const timings = createTimings({
|
|
47
|
+
onError: (error) => reports.record(error, { type: "listener_error" })
|
|
48
|
+
});
|
|
47
49
|
const harness = await Harness.open(
|
|
48
50
|
options.storage ?? new MemoryStorage(),
|
|
49
51
|
{
|
package/dist/agent.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/agent.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Context } from '@earendil-works/chord';\nimport { BACKGROUND_CONTEXT } from '@earendil-works/chord/context';\nimport type { Models } from '@earendil-works/pi-ai/models';\nimport {\n AssistantEntry,\n type Conversation,\n createRegistry,\n type EntryId,\n Harness,\n type HarnessOptions,\n MemoryStorage,\n type ModelRef,\n type Registry,\n type Storage,\n} from '@earendil-works/pi-durable';\nimport { type Agents, openAgents } from './agents.ts';\nimport type { Clock } from './clock.ts';\nimport type { Cones } from './cone.ts';\nimport { type GuestToolGate, guestToolGate } from './guests/guard.ts';\nimport { type GuestReviews, guestReviews } from './guests/review.ts';\nimport { type ScoopReviews, scoopReviews } from './guests/scoop.ts';\nimport { createReports, type Reports } from './reports.ts';\nimport { createTimings, type Timings } from './timings.ts';\n\nexport interface AgentOptions {\n models: Models;\n model: ModelRef;\n storage?: Storage;\n registry?: Registry;\n settings?: HarnessOptions['settings'];\n env?: HarnessOptions['env'];\n conversationCreated?: HarnessOptions['conversationCreated'];\n context?: Context;\n beforeResume?: (harness: Harness, context: Context) => Promise<unknown>;\n clock?: Clock;\n}\n\nexport interface Agent extends Cones {\n readonly harness: Harness;\n readonly root: Conversation;\n readonly agents: Agents;\n readonly reviews: GuestReviews;\n readonly gate: GuestToolGate;\n readonly scoopReviews: ScoopReviews;\n readonly reports: Reports;\n readonly timings: Timings;\n onCone(listener: (conversation: Conversation) => void | Promise<void>): () => void;\n prompt(text: string): Promise<string>;\n close(): Promise<void>;\n}\n\ninterface Block {\n type: string;\n text?: string;\n}\n\nexport function answerText(content: unknown): string {\n if (typeof content === 'string') return content;\n if (!Array.isArray(content)) return '';\n return (content as Block[])\n .filter((block) => block.type === 'text')\n .map((block) => block.text ?? '')\n .join('');\n}\n\nasync function prompt(root: Conversation, text: string, context: Context): Promise<string> {\n const submission = await root.submit({ type: 'input', content: text }, context);\n const settled = await submission.wait(context);\n const { answer, reason } = settled as { answer?: EntryId; reason?: string };\n if (answer === undefined) throw new Error(`unanswered: ${reason}`);\n const entry = await root.commit((tx) => tx.entry(AssistantEntry, answer), context);\n return answerText(entry?.model?.[0]?.content);\n}\n\nexport const SLICC_ATTRIBUTION = { name: 'SLICC', url: 'https://www.sliccy.com' };\nconst IDENTITY = { attribution: SLICC_ATTRIBUTION };\nfunction clocked(clock: Clock): Pick<HarnessOptions, 'now' | 'setTimer'> {\n return {\n now: () => clock.now(),\n setTimer: (callback, delayMs) => clock.setTimer(callback, delayMs),\n };\n}\n\nexport async function openAgent(options: AgentOptions): Promise<Agent> {\n const context = options.context ?? BACKGROUND_CONTEXT;\n const registry = options.registry ?? createRegistry();\n let opened: Harness | undefined;\n const gate = guestToolGate(() => opened);\n registry.install(gate.extension);\n const reviews = guestReviews();\n registry.install(reviews.extension);\n const scooped = scoopReviews();\n registry.install(scooped.extension);\n const reports = createReports();\n const timings = createTimings();\n const harness = await Harness.open(\n options.storage ?? new MemoryStorage(),\n {\n models: options.models,\n registry,\n identity: IDENTITY,\n ...(options.settings ? { settings: options.settings } : {}),\n onReport: (error, info) => reports.record(error, info),\n telemetry: timings.telemetry,\n ...(options.clock ? clocked(options.clock) : {}),\n ...(options.env ? { env: options.env } : {}),\n ...(options.conversationCreated ? { conversationCreated: options.conversationCreated } : {}),\n },\n context\n );\n opened = harness;\n const root = await harness.root(context, { agent: { model: options.model } });\n const agents = await openAgents(harness, root, context);\n await options.beforeResume?.(harness, context);\n harness.resume();\n return {\n harness,\n root,\n agents,\n reviews,\n gate,\n scoopReviews: scooped,\n reports,\n timings,\n cone: () => agents.cone(),\n switchCone: (conversation, switching) => agents.switchCone(conversation, switching),\n onCone: (listener) => agents.onCone(listener),\n prompt: (text) => prompt(agents.cone(), text, context),\n close: () => harness.close(context),\n };\n}\n"],
|
|
5
|
-
"mappings": "AACA,SAAS,0BAA0B;AAEnC;AAAA,EACE;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,OAIK;AACP,SAAsB,kBAAkB;AAGxC,SAA6B,qBAAqB;AAClD,SAA4B,oBAAoB;AAChD,SAA4B,oBAAoB;AAChD,SAAS,qBAAmC;AAC5C,SAAS,qBAAmC;AAkCrC,SAAS,WAAW,SAA0B;AACnD,MAAI,OAAO,YAAY,SAAU,QAAO;AACxC,MAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,QAAO;AACpC,SAAQ,QACL,OAAO,CAAC,UAAU,MAAM,SAAS,MAAM,EACvC,IAAI,CAAC,UAAU,MAAM,QAAQ,EAAE,EAC/B,KAAK,EAAE;AACZ;AAEA,eAAe,OAAO,MAAoB,MAAc,SAAmC;AACzF,QAAM,aAAa,MAAM,KAAK,OAAO,EAAE,MAAM,SAAS,SAAS,KAAK,GAAG,OAAO;AAC9E,QAAM,UAAU,MAAM,WAAW,KAAK,OAAO;AAC7C,QAAM,EAAE,QAAQ,OAAO,IAAI;AAC3B,MAAI,WAAW,OAAW,OAAM,IAAI,MAAM,eAAe,MAAM,EAAE;AACjE,QAAM,QAAQ,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG,MAAM,gBAAgB,MAAM,GAAG,OAAO;AACjF,SAAO,WAAW,OAAO,QAAQ,CAAC,GAAG,OAAO;AAC9C;AAEO,MAAM,oBAAoB,EAAE,MAAM,SAAS,KAAK,yBAAyB;AAChF,MAAM,WAAW,EAAE,aAAa,kBAAkB;AAClD,SAAS,QAAQ,OAAwD;AACvE,SAAO;AAAA,IACL,KAAK,MAAM,MAAM,IAAI;AAAA,IACrB,UAAU,CAAC,UAAU,YAAY,MAAM,SAAS,UAAU,OAAO;AAAA,EACnE;AACF;AAEA,eAAsB,UAAU,SAAuC;AACrE,QAAM,UAAU,QAAQ,WAAW;AACnC,QAAM,WAAW,QAAQ,YAAY,eAAe;AACpD,MAAI;AACJ,QAAM,OAAO,cAAc,MAAM,MAAM;AACvC,WAAS,QAAQ,KAAK,SAAS;AAC/B,QAAM,UAAU,aAAa;AAC7B,WAAS,QAAQ,QAAQ,SAAS;AAClC,QAAM,UAAU,aAAa;AAC7B,WAAS,QAAQ,QAAQ,SAAS;AAClC,QAAM,UAAU,cAAc;AAC9B,QAAM,UAAU,cAAc;
|
|
4
|
+
"sourcesContent": ["import type { Context } from '@earendil-works/chord';\nimport { BACKGROUND_CONTEXT } from '@earendil-works/chord/context';\nimport type { Models } from '@earendil-works/pi-ai/models';\nimport {\n AssistantEntry,\n type Conversation,\n createRegistry,\n type EntryId,\n Harness,\n type HarnessOptions,\n MemoryStorage,\n type ModelRef,\n type Registry,\n type Storage,\n} from '@earendil-works/pi-durable';\nimport { type Agents, openAgents } from './agents.ts';\nimport type { Clock } from './clock.ts';\nimport type { Cones } from './cone.ts';\nimport { type GuestToolGate, guestToolGate } from './guests/guard.ts';\nimport { type GuestReviews, guestReviews } from './guests/review.ts';\nimport { type ScoopReviews, scoopReviews } from './guests/scoop.ts';\nimport { createReports, type Reports } from './reports.ts';\nimport { createTimings, type Timings } from './timings.ts';\n\nexport interface AgentOptions {\n models: Models;\n model: ModelRef;\n storage?: Storage;\n registry?: Registry;\n settings?: HarnessOptions['settings'];\n env?: HarnessOptions['env'];\n conversationCreated?: HarnessOptions['conversationCreated'];\n context?: Context;\n beforeResume?: (harness: Harness, context: Context) => Promise<unknown>;\n clock?: Clock;\n}\n\nexport interface Agent extends Cones {\n readonly harness: Harness;\n readonly root: Conversation;\n readonly agents: Agents;\n readonly reviews: GuestReviews;\n readonly gate: GuestToolGate;\n readonly scoopReviews: ScoopReviews;\n readonly reports: Reports;\n readonly timings: Timings;\n onCone(listener: (conversation: Conversation) => void | Promise<void>): () => void;\n prompt(text: string): Promise<string>;\n close(): Promise<void>;\n}\n\ninterface Block {\n type: string;\n text?: string;\n}\n\nexport function answerText(content: unknown): string {\n if (typeof content === 'string') return content;\n if (!Array.isArray(content)) return '';\n return (content as Block[])\n .filter((block) => block.type === 'text')\n .map((block) => block.text ?? '')\n .join('');\n}\n\nasync function prompt(root: Conversation, text: string, context: Context): Promise<string> {\n const submission = await root.submit({ type: 'input', content: text }, context);\n const settled = await submission.wait(context);\n const { answer, reason } = settled as { answer?: EntryId; reason?: string };\n if (answer === undefined) throw new Error(`unanswered: ${reason}`);\n const entry = await root.commit((tx) => tx.entry(AssistantEntry, answer), context);\n return answerText(entry?.model?.[0]?.content);\n}\n\nexport const SLICC_ATTRIBUTION = { name: 'SLICC', url: 'https://www.sliccy.com' };\nconst IDENTITY = { attribution: SLICC_ATTRIBUTION };\nfunction clocked(clock: Clock): Pick<HarnessOptions, 'now' | 'setTimer'> {\n return {\n now: () => clock.now(),\n setTimer: (callback, delayMs) => clock.setTimer(callback, delayMs),\n };\n}\n\nexport async function openAgent(options: AgentOptions): Promise<Agent> {\n const context = options.context ?? BACKGROUND_CONTEXT;\n const registry = options.registry ?? createRegistry();\n let opened: Harness | undefined;\n const gate = guestToolGate(() => opened);\n registry.install(gate.extension);\n const reviews = guestReviews();\n registry.install(reviews.extension);\n const scooped = scoopReviews();\n registry.install(scooped.extension);\n const reports = createReports();\n const timings = createTimings({\n onError: (error) => reports.record(error, { type: 'listener_error' }),\n });\n const harness = await Harness.open(\n options.storage ?? new MemoryStorage(),\n {\n models: options.models,\n registry,\n identity: IDENTITY,\n ...(options.settings ? { settings: options.settings } : {}),\n onReport: (error, info) => reports.record(error, info),\n telemetry: timings.telemetry,\n ...(options.clock ? clocked(options.clock) : {}),\n ...(options.env ? { env: options.env } : {}),\n ...(options.conversationCreated ? { conversationCreated: options.conversationCreated } : {}),\n },\n context\n );\n opened = harness;\n const root = await harness.root(context, { agent: { model: options.model } });\n const agents = await openAgents(harness, root, context);\n await options.beforeResume?.(harness, context);\n harness.resume();\n return {\n harness,\n root,\n agents,\n reviews,\n gate,\n scoopReviews: scooped,\n reports,\n timings,\n cone: () => agents.cone(),\n switchCone: (conversation, switching) => agents.switchCone(conversation, switching),\n onCone: (listener) => agents.onCone(listener),\n prompt: (text) => prompt(agents.cone(), text, context),\n close: () => harness.close(context),\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/timings.js
CHANGED
|
@@ -2,13 +2,23 @@ const TIMINGS_MAX = 50;
|
|
|
2
2
|
const REQUEST = "pi.ai.request";
|
|
3
3
|
const FIRST_CHUNK = "pi.ai.first_chunk";
|
|
4
4
|
const text = (value, fallback) => typeof value === "string" ? value : fallback;
|
|
5
|
-
function createTimings(
|
|
5
|
+
function createTimings({
|
|
6
|
+
clock = () => performance.now(),
|
|
7
|
+
wall = Date.now,
|
|
8
|
+
max = TIMINGS_MAX,
|
|
9
|
+
onError = () => void 0
|
|
10
|
+
} = {}) {
|
|
6
11
|
const kept = [];
|
|
7
12
|
const listeners = /* @__PURE__ */ new Set();
|
|
8
13
|
const record = (timing) => {
|
|
9
14
|
kept.unshift(timing);
|
|
10
15
|
kept.length = Math.min(kept.length, max);
|
|
11
|
-
for (const listener of listeners)
|
|
16
|
+
for (const listener of listeners)
|
|
17
|
+
try {
|
|
18
|
+
listener(timing);
|
|
19
|
+
} catch (error) {
|
|
20
|
+
onError(error);
|
|
21
|
+
}
|
|
12
22
|
};
|
|
13
23
|
const start = async (options, callback) => {
|
|
14
24
|
const started = clock();
|
package/dist/timings.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/timings.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n SpanAttributes,\n SpanOptions,\n TelemetryContext,\n TelemetrySpan,\n} from '@earendil-works/pi-telemetry';\n\nexport const TIMINGS_MAX = 50;\nconst REQUEST = 'pi.ai.request';\nconst FIRST_CHUNK = 'pi.ai.first_chunk';\n\nexport interface ModelTiming {\n at: number;\n provider: string;\n model: string;\n stop: string;\n durationMs: number;\n firstChunkMs: number | null;\n}\n\nexport interface Timings {\n list(): readonly ModelTiming[];\n subscribe(listener: (timing: ModelTiming) => void): () => void;\n}\n\nexport interface TimingSink extends Timings {\n readonly telemetry: TelemetryContext;\n}\n\nconst text = (value: unknown, fallback: string) => (typeof value === 'string' ? value : fallback);\n\nexport
|
|
5
|
-
"mappings": "AAOO,MAAM,cAAc;AAC3B,MAAM,UAAU;AAChB,MAAM,cAAc;AAoBpB,MAAM,OAAO,CAAC,OAAgB,aAAsB,OAAO,UAAU,WAAW,QAAQ;
|
|
4
|
+
"sourcesContent": ["import type {\n SpanAttributes,\n SpanOptions,\n TelemetryContext,\n TelemetrySpan,\n} from '@earendil-works/pi-telemetry';\n\nexport const TIMINGS_MAX = 50;\nconst REQUEST = 'pi.ai.request';\nconst FIRST_CHUNK = 'pi.ai.first_chunk';\n\nexport interface ModelTiming {\n at: number;\n provider: string;\n model: string;\n stop: string;\n durationMs: number;\n firstChunkMs: number | null;\n}\n\nexport interface Timings {\n list(): readonly ModelTiming[];\n subscribe(listener: (timing: ModelTiming) => void): () => void;\n}\n\nexport interface TimingSink extends Timings {\n readonly telemetry: TelemetryContext;\n}\n\nconst text = (value: unknown, fallback: string) => (typeof value === 'string' ? value : fallback);\n\nexport interface TimingsOptions {\n clock?: () => number;\n wall?: () => number;\n max?: number;\n onError?: (error: unknown) => void;\n}\n\nexport function createTimings({\n clock = () => performance.now(),\n wall = Date.now,\n max = TIMINGS_MAX,\n onError = () => undefined,\n}: TimingsOptions = {}): TimingSink {\n const kept: ModelTiming[] = [];\n const listeners = new Set<(timing: ModelTiming) => void>();\n const record = (timing: ModelTiming) => {\n kept.unshift(timing);\n kept.length = Math.min(kept.length, max);\n for (const listener of listeners)\n try {\n listener(timing);\n } catch (error) {\n onError(error);\n }\n };\n const start = async <T>(\n options: SpanOptions,\n callback: (span: TelemetrySpan) => T | Promise<T>\n ): Promise<T> => {\n const started = clock();\n const attributes: SpanAttributes = { ...options.attributes };\n let firstChunk: number | null = null;\n const span: TelemetrySpan = {\n startSpan: start,\n addLink: () => undefined,\n addEvent: (name) => {\n if (name === FIRST_CHUNK && firstChunk === null) firstChunk = clock() - started;\n },\n setAttributes: (more) => {\n Object.assign(attributes, more);\n },\n setStatus: () => undefined,\n };\n try {\n return await callback(span);\n } finally {\n if (options.name === REQUEST)\n record({\n at: wall(),\n provider: text(attributes.provider, 'unknown'),\n model: text(attributes.model, 'unknown'),\n stop: text(attributes.stop, 'unknown'),\n durationMs: clock() - started,\n firstChunkMs: firstChunk,\n });\n }\n };\n return {\n telemetry: { startSpan: start },\n list: () => [...kept],\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "AAOO,MAAM,cAAc;AAC3B,MAAM,UAAU;AAChB,MAAM,cAAc;AAoBpB,MAAM,OAAO,CAAC,OAAgB,aAAsB,OAAO,UAAU,WAAW,QAAQ;AASjF,SAAS,cAAc;AAAA,EAC5B,QAAQ,MAAM,YAAY,IAAI;AAAA,EAC9B,OAAO,KAAK;AAAA,EACZ,MAAM;AAAA,EACN,UAAU,MAAM;AAClB,IAAoB,CAAC,GAAe;AAClC,QAAM,OAAsB,CAAC;AAC7B,QAAM,YAAY,oBAAI,IAAmC;AACzD,QAAM,SAAS,CAAC,WAAwB;AACtC,SAAK,QAAQ,MAAM;AACnB,SAAK,SAAS,KAAK,IAAI,KAAK,QAAQ,GAAG;AACvC,eAAW,YAAY;AACrB,UAAI;AACF,iBAAS,MAAM;AAAA,MACjB,SAAS,OAAO;AACd,gBAAQ,KAAK;AAAA,MACf;AAAA,EACJ;AACA,QAAM,QAAQ,OACZ,SACA,aACe;AACf,UAAM,UAAU,MAAM;AACtB,UAAM,aAA6B,EAAE,GAAG,QAAQ,WAAW;AAC3D,QAAI,aAA4B;AAChC,UAAM,OAAsB;AAAA,MAC1B,WAAW;AAAA,MACX,SAAS,MAAM;AAAA,MACf,UAAU,CAAC,SAAS;AAClB,YAAI,SAAS,eAAe,eAAe,KAAM,cAAa,MAAM,IAAI;AAAA,MAC1E;AAAA,MACA,eAAe,CAAC,SAAS;AACvB,eAAO,OAAO,YAAY,IAAI;AAAA,MAChC;AAAA,MACA,WAAW,MAAM;AAAA,IACnB;AACA,QAAI;AACF,aAAO,MAAM,SAAS,IAAI;AAAA,IAC5B,UAAE;AACA,UAAI,QAAQ,SAAS;AACnB,eAAO;AAAA,UACL,IAAI,KAAK;AAAA,UACT,UAAU,KAAK,WAAW,UAAU,SAAS;AAAA,UAC7C,OAAO,KAAK,WAAW,OAAO,SAAS;AAAA,UACvC,MAAM,KAAK,WAAW,MAAM,SAAS;AAAA,UACrC,YAAY,MAAM,IAAI;AAAA,UACtB,cAAc;AAAA,QAChB,CAAC;AAAA,IACL;AAAA,EACF;AACA,SAAO;AAAA,IACL,WAAW,EAAE,WAAW,MAAM;AAAA,IAC9B,MAAM,MAAM,CAAC,GAAG,IAAI;AAAA,IACpB,UAAU,UAAU;AAClB,gBAAU,IAAI,QAAQ;AACtB,aAAO,MAAM,UAAU,OAAO,QAAQ;AAAA,IACxC;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/types/timings.d.ts
CHANGED
|
@@ -15,4 +15,10 @@ export interface Timings {
|
|
|
15
15
|
export interface TimingSink extends Timings {
|
|
16
16
|
readonly telemetry: TelemetryContext;
|
|
17
17
|
}
|
|
18
|
-
export
|
|
18
|
+
export interface TimingsOptions {
|
|
19
|
+
clock?: () => number;
|
|
20
|
+
wall?: () => number;
|
|
21
|
+
max?: number;
|
|
22
|
+
onError?: (error: unknown) => void;
|
|
23
|
+
}
|
|
24
|
+
export declare function createTimings({ clock, wall, max, onError, }?: TimingsOptions): TimingSink;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-agent",
|
|
3
|
-
"version": "7.6.
|
|
3
|
+
"version": "7.6.3",
|
|
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",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"typescript": "7.0.2"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
|
-
"@ai-ecoverse/slicc-browsers": "1.18.
|
|
88
|
+
"@ai-ecoverse/slicc-browsers": "1.18.12",
|
|
89
89
|
"@ai-ecoverse/slicc-vault": "1.16.1",
|
|
90
90
|
"@aws-sdk/middleware-websocket": "^3.972.54",
|
|
91
91
|
"@earendil-works/chord": "1.4.0",
|