@halo-sdk/core 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +50 -5
  2. package/dist/halo-agent.d.ts +45 -7
  3. package/dist/halo-agent.d.ts.map +1 -1
  4. package/dist/halo.d.ts +13 -2
  5. package/dist/halo.d.ts.map +1 -1
  6. package/dist/index.cjs +6934 -0
  7. package/dist/index.cjs.map +1 -0
  8. package/dist/index.d.ts +8 -4
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +6895 -5
  11. package/dist/index.js.map +1 -1
  12. package/dist/model-adapter.d.ts +20 -8
  13. package/dist/model-adapter.d.ts.map +1 -1
  14. package/dist/sandbox.d.ts +78 -0
  15. package/dist/sandbox.d.ts.map +1 -0
  16. package/dist/session-impl.d.ts +34 -6
  17. package/dist/session-impl.d.ts.map +1 -1
  18. package/dist/session.d.ts +92 -2
  19. package/dist/session.d.ts.map +1 -1
  20. package/dist/skills.d.ts +27 -0
  21. package/dist/skills.d.ts.map +1 -0
  22. package/dist/tool.d.ts +10 -13
  23. package/dist/tool.d.ts.map +1 -1
  24. package/dist/tools-builtin.d.ts +12 -0
  25. package/dist/tools-builtin.d.ts.map +1 -0
  26. package/dist/types.d.ts +11 -0
  27. package/dist/types.d.ts.map +1 -1
  28. package/package.json +13 -8
  29. package/dist/halo-agent.js +0 -95
  30. package/dist/halo-agent.js.map +0 -1
  31. package/dist/halo-session.d.ts +0 -60
  32. package/dist/halo-session.d.ts.map +0 -1
  33. package/dist/halo-session.js +0 -80
  34. package/dist/halo-session.js.map +0 -1
  35. package/dist/halo.js +0 -20
  36. package/dist/halo.js.map +0 -1
  37. package/dist/log.js +0 -41
  38. package/dist/log.js.map +0 -1
  39. package/dist/model-adapter.js +0 -2
  40. package/dist/model-adapter.js.map +0 -1
  41. package/dist/prefix.js +0 -84
  42. package/dist/prefix.js.map +0 -1
  43. package/dist/session-impl.js +0 -308
  44. package/dist/session-impl.js.map +0 -1
  45. package/dist/session.js +0 -2
  46. package/dist/session.js.map +0 -1
  47. package/dist/strategies.js +0 -2
  48. package/dist/strategies.js.map +0 -1
  49. package/dist/tool-utils.js +0 -36
  50. package/dist/tool-utils.js.map +0 -1
  51. package/dist/tool.js +0 -23
  52. package/dist/tool.js.map +0 -1
  53. package/dist/types.js +0 -2
  54. package/dist/types.js.map +0 -1
@@ -1,60 +0,0 @@
1
- import type { ChatMessage, ToolCall, ToolDefinition, ToolSpec } from "./types.js";
2
- import type { TurnResult, TurnChunk, ToolResult, SessionStats, HaloSessionOptions } from "./session.js";
3
- /**
4
- * Public API for a single cache-aware conversation session.
5
- *
6
- * Create one via `new HaloSession(opts)` or `halo.session(opts)`.
7
- * Each session maintains a stable prefix (system prompt + tools + few-shots)
8
- * that enables DeepSeek's prefix caching across turns.
9
- */
10
- export declare class HaloSession {
11
- private _impl;
12
- constructor(opts: HaloSessionOptions);
13
- /** Read-only session statistics. Updated after every turn. */
14
- get stats(): Readonly<SessionStats>;
15
- /**
16
- * Run a prompt with automatic tool-call loop.
17
- * This is the default entry point for 80% of use-cases.
18
- */
19
- run(input: string, opts?: {
20
- maxSteps?: number;
21
- onToolCall?: (call: ToolCall) => Promise<ToolResult>;
22
- onStep?: (step: {
23
- step: number;
24
- content: string;
25
- toolCalls: ToolCall[];
26
- }) => void;
27
- }): Promise<TurnResult>;
28
- /**
29
- * Send a message. Tool calls are returned, NOT automatically executed.
30
- * Use submitToolResult() to feed results back.
31
- */
32
- send(input: string): Promise<TurnResult>;
33
- /** Stream a message. */
34
- stream(input: string): AsyncGenerator<TurnChunk>;
35
- /** Submit a tool execution result. Triggers another model call. */
36
- submitToolResult(result: ToolResult): Promise<TurnResult>;
37
- /** Add a tool to the session. Triggers cache miss for the NEXT turn only. */
38
- addTool(spec: ToolSpec): void;
39
- /** Add a named tool with an optional execute function. */
40
- addTool(name: string, def: ToolDefinition): void;
41
- /** Remove a tool. Same cache-miss semantics. */
42
- removeTool(name: string): void;
43
- /** Add a few-shot example. Same cache-miss semantics. */
44
- addFewShot(msg: ChatMessage): void;
45
- /** Remove a few-shot example by index. */
46
- removeFewShot(index: number): boolean;
47
- /**
48
- * Start a keep-alive timer that sends periodic pings to maintain
49
- * server-side KV cache warmth. Call stop() when the long-running
50
- * task is done.
51
- */
52
- keepAlive(intervalMs?: number): {
53
- stop: () => void;
54
- };
55
- /** Clear conversation history without changing the prefix. */
56
- clearLog(): void;
57
- /** Change the system prompt. Triggers cache miss. */
58
- setSystem(system: string): void;
59
- }
60
- //# sourceMappingURL=halo-session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"halo-session.d.ts","sourceRoot":"","sources":["../src/halo-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAGtB;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAkB;gBAEnB,IAAI,EAAE,kBAAkB;IAMpC,8DAA8D;IAC9D,IAAI,KAAK,IAAI,QAAQ,CAAC,YAAY,CAAC,CAElC;IAED;;;OAGG;IACG,GAAG,CACP,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;SAAE,KAAK,IAAI,CAAC;KACnF,GACA,OAAO,CAAC,UAAU,CAAC;IAItB;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI9C,wBAAwB;IACjB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC;IAIvD,mEAAmE;IAC7D,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAM/D,6EAA6E;IAC7E,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAC7B,0DAA0D;IAC1D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI;IAQhD,gDAAgD;IAChD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAG9B,yDAAyD;IACzD,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAGlC,0CAA0C;IAC1C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAMrC;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE;IAMpD,8DAA8D;IAC9D,QAAQ,IAAI,IAAI;IAGhB,qDAAqD;IACrD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGhC"}
@@ -1,80 +0,0 @@
1
- import { HaloSessionImpl } from "./session-impl.js";
2
- /**
3
- * Public API for a single cache-aware conversation session.
4
- *
5
- * Create one via `new HaloSession(opts)` or `halo.session(opts)`.
6
- * Each session maintains a stable prefix (system prompt + tools + few-shots)
7
- * that enables DeepSeek's prefix caching across turns.
8
- */
9
- export class HaloSession {
10
- _impl;
11
- constructor(opts) {
12
- this._impl = new HaloSessionImpl(opts);
13
- }
14
- // ── Core ──
15
- /** Read-only session statistics. Updated after every turn. */
16
- get stats() {
17
- return this._impl.stats;
18
- }
19
- /**
20
- * Run a prompt with automatic tool-call loop.
21
- * This is the default entry point for 80% of use-cases.
22
- */
23
- async run(input, opts) {
24
- return this._impl.run(input, opts);
25
- }
26
- /**
27
- * Send a message. Tool calls are returned, NOT automatically executed.
28
- * Use submitToolResult() to feed results back.
29
- */
30
- async send(input) {
31
- return this._impl.send(input);
32
- }
33
- /** Stream a message. */
34
- async *stream(input) {
35
- yield* this._impl.stream(input);
36
- }
37
- /** Submit a tool execution result. Triggers another model call. */
38
- async submitToolResult(result) {
39
- return this._impl.submitToolResult(result);
40
- }
41
- addTool(specOrName, def) {
42
- if (typeof specOrName === "string") {
43
- this._impl.addTool(specOrName, def);
44
- }
45
- else {
46
- this._impl.addTool(specOrName);
47
- }
48
- }
49
- /** Remove a tool. Same cache-miss semantics. */
50
- removeTool(name) {
51
- this._impl.removeTool(name);
52
- }
53
- /** Add a few-shot example. Same cache-miss semantics. */
54
- addFewShot(msg) {
55
- this._impl.addFewShot(msg);
56
- }
57
- /** Remove a few-shot example by index. */
58
- removeFewShot(index) {
59
- return this._impl.removeFewShot(index);
60
- }
61
- // ── Keep-alive ──
62
- /**
63
- * Start a keep-alive timer that sends periodic pings to maintain
64
- * server-side KV cache warmth. Call stop() when the long-running
65
- * task is done.
66
- */
67
- keepAlive(intervalMs) {
68
- return this._impl.keepAlive(intervalMs);
69
- }
70
- // ── Lifecycle ──
71
- /** Clear conversation history without changing the prefix. */
72
- clearLog() {
73
- this._impl.clearLog();
74
- }
75
- /** Change the system prompt. Triggers cache miss. */
76
- setSystem(system) {
77
- this._impl.setSystem(system);
78
- }
79
- }
80
- //# sourceMappingURL=halo-session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"halo-session.js","sourceRoot":"","sources":["../src/halo-session.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACd,KAAK,CAAkB;IAE/B,YAAY,IAAwB;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,aAAa;IAEb,8DAA8D;IAC9D,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CACP,KAAa,EACb,IAIC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,CAAC,MAAM,CAAC,KAAa;QACzB,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,gBAAgB,CAAC,MAAkB;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAQD,OAAO,CAAC,UAA6B,EAAE,GAAoB;QACzD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,GAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,gDAAgD;IAChD,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,yDAAyD;IACzD,UAAU,CAAC,GAAgB;QACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,0CAA0C;IAC1C,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,mBAAmB;IAEnB;;;;OAIG;IACH,SAAS,CAAC,UAAmB;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,kBAAkB;IAElB,8DAA8D;IAC9D,QAAQ;QACN,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IACD,qDAAqD;IACrD,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACF"}
package/dist/halo.js DELETED
@@ -1,20 +0,0 @@
1
- import { HaloAgent } from "./halo-agent.js";
2
- export class Halo {
3
- _adapter;
4
- constructor(opts) {
5
- this._adapter = opts.adapter;
6
- }
7
- agent(opts) {
8
- const agentOpts = {
9
- adapter: this._adapter,
10
- system: opts.system,
11
- tools: opts.tools,
12
- fewShots: opts.fewShots,
13
- context: opts.context,
14
- repair: opts.repair,
15
- on: opts.on,
16
- };
17
- return new HaloAgent(agentOpts);
18
- }
19
- }
20
- //# sourceMappingURL=halo.js.map
package/dist/halo.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"halo.js","sourceRoot":"","sources":["../src/halo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM5C,MAAM,OAAO,IAAI;IACP,QAAQ,CAAe;IAE/B,YAAY,IAA+B;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,IASL;QACC,MAAM,SAAS,GAAqB;YAClC,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC;QAEF,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;CACF"}
package/dist/log.js DELETED
@@ -1,41 +0,0 @@
1
- export class MessageLog {
2
- _entries = [];
3
- _storageLimit;
4
- _version = 0;
5
- constructor(opts) {
6
- this._storageLimit = opts?.storageLimit ?? 10_000;
7
- }
8
- /** Append a message. Bumps version. */
9
- append(msg) {
10
- if (!msg || typeof msg !== "object" || !("role" in msg)) {
11
- throw new Error(`invalid log entry: ${JSON.stringify(msg)}`);
12
- }
13
- this._entries.push(msg);
14
- if (this._entries.length > this._storageLimit) {
15
- this._entries.shift();
16
- }
17
- this._version++;
18
- }
19
- /** Replace all entries. Use to restore conversation state from external history. */
20
- hydrate(messages) {
21
- this._entries = [...messages];
22
- this._version++;
23
- }
24
- /** Returns a shallow copy of the full history. */
25
- toFullHistory() {
26
- return this._entries.map((e) => ({ ...e }));
27
- }
28
- /** Returns a copy of the most recent N entries. */
29
- recent(n) {
30
- return this._entries.slice(-n).map((e) => ({ ...e }));
31
- }
32
- /** Number of messages currently held. */
33
- get length() {
34
- return this._entries.length;
35
- }
36
- /** Monotonic version. Consumers compare against their own snapshot. */
37
- get version() {
38
- return this._version;
39
- }
40
- }
41
- //# sourceMappingURL=log.js.map
package/dist/log.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAU;IACb,QAAQ,GAAkB,EAAE,CAAC;IAC7B,aAAa,CAAS;IACtB,QAAQ,GAAG,CAAC,CAAC;IAErB,YAAY,IAAgC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,YAAY,IAAI,MAAM,CAAC;IACpD,CAAC;IAED,uCAAuC;IACvC,MAAM,CAAC,GAAgB;QACrB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,oFAAoF;IACpF,OAAO,CAAC,QAAuB;QAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,aAAa;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,CAAS;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,yCAAyC;IACzC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,uEAAuE;IACvE,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=model-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-adapter.js","sourceRoot":"","sources":["../src/model-adapter.ts"],"names":[],"mappings":""}
package/dist/prefix.js DELETED
@@ -1,84 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- export class StablePrefix {
3
- _system;
4
- _toolSpecs;
5
- _fewShots;
6
- _hashFn;
7
- _fingerprintCache = null;
8
- constructor(opts) {
9
- this._system = opts.system;
10
- this._toolSpecs = [...opts.tools];
11
- this._fewShots = [...(opts.fewShots ?? [])];
12
- this._hashFn = opts.hashFn ?? defaultHash;
13
- }
14
- /** Messages that form the stable prefix: [system, ...fewShots]. */
15
- toMessages() {
16
- return [{ role: "system", content: this._system }, ...this._fewShots.map((m) => ({ ...m }))];
17
- }
18
- /** Shallow copy of the tool list. */
19
- tools() {
20
- return this._toolSpecs.map((t) => ({ ...t, function: { ...t.function } }));
21
- }
22
- /** SHA-256[:16] fingerprint of the entire prefix. */
23
- get fingerprint() {
24
- if (this._fingerprintCache !== null)
25
- return this._fingerprintCache;
26
- this._fingerprintCache = this.computeFingerprint();
27
- return this._fingerprintCache;
28
- }
29
- get diagnostics() {
30
- return {
31
- systemHash: this._hashFn(JSON.stringify(this._system)),
32
- toolSpecsHash: this._hashFn(JSON.stringify(this._toolSpecs)),
33
- fewShotsHash: this._hashFn(JSON.stringify(this._fewShots)),
34
- toolCount: this._toolSpecs.length,
35
- toolNames: this._toolSpecs.map((t) => t.function.name).filter(Boolean),
36
- };
37
- }
38
- // ── Mutation ──
39
- addTool(spec) {
40
- const name = spec.function?.name;
41
- if (!name)
42
- return false;
43
- if (this._toolSpecs.some((t) => t.function?.name === name))
44
- return false;
45
- this._toolSpecs.push(spec);
46
- this.invalidate();
47
- return true;
48
- }
49
- removeTool(name) {
50
- const idx = this._toolSpecs.findIndex((t) => t.function?.name === name);
51
- if (idx < 0)
52
- return false;
53
- this._toolSpecs.splice(idx, 1);
54
- this.invalidate();
55
- return true;
56
- }
57
- addFewShot(msg) {
58
- this._fewShots.push(msg);
59
- this.invalidate();
60
- }
61
- removeFewShot(index) {
62
- if (index < 0 || index >= this._fewShots.length)
63
- return false;
64
- this._fewShots.splice(index, 1);
65
- this.invalidate();
66
- return true;
67
- }
68
- // ── Private ──
69
- invalidate() {
70
- this._fingerprintCache = null;
71
- }
72
- computeFingerprint() {
73
- const blob = JSON.stringify({
74
- system: this._system,
75
- tools: this._toolSpecs,
76
- shots: this._fewShots,
77
- });
78
- return this._hashFn(blob);
79
- }
80
- }
81
- function defaultHash(input) {
82
- return createHash("sha256").update(input).digest("hex").slice(0, 16);
83
- }
84
- //# sourceMappingURL=prefix.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prefix.js","sourceRoot":"","sources":["../src/prefix.ts"],"names":[],"mappings":"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"}
@@ -1,308 +0,0 @@
1
- import { StablePrefix } from "./prefix.js";
2
- import { MessageLog } from "./log.js";
3
- import { normalizeTools, definitionToSpec } from "./tool-utils.js";
4
- /** Internal implementation. Exported for testing only. */
5
- export class HaloAgentImpl {
6
- _adapter;
7
- _prefix;
8
- _log;
9
- _context;
10
- _repair;
11
- _listeners;
12
- _stats;
13
- _keepAliveTimer = null;
14
- _toolExecutors;
15
- constructor(opts) {
16
- this._adapter = opts.adapter;
17
- // Normalize tools: accept both ToolSpec[] and Record<string, ToolDefinition>.
18
- const { toolSpecs, executors } = normalizeTools(opts.tools);
19
- this._toolExecutors = executors;
20
- this._prefix = new StablePrefix({
21
- system: opts.system,
22
- tools: toolSpecs,
23
- fewShots: opts.fewShots,
24
- });
25
- this._log = new MessageLog();
26
- this._context = opts.context;
27
- this._repair = opts.repair;
28
- this._listeners = new Map();
29
- // Register external listener if provided.
30
- if (opts.on) {
31
- for (const ev of ["cache:miss", "context:truncated", "repair:applied"]) {
32
- this._listeners.set(ev, new Set());
33
- this._listeners.get(ev).add(opts.on);
34
- }
35
- }
36
- this._stats = {
37
- turns: 0,
38
- totalPromptTokens: 0,
39
- totalCompletionTokens: 0,
40
- pricingSnapshot: {
41
- recordedAt: Date.now(),
42
- inputPricePer1k: this._adapter.pricing?.inputPricePer1k ?? 0,
43
- cachedInputPricePer1k: this._adapter.pricing?.cachedInputPricePer1k ?? 0,
44
- },
45
- recentDiagnostics: [],
46
- };
47
- if (this._adapter.pricing) {
48
- this._stats.caching = {
49
- totalCacheHitTokens: 0,
50
- totalCacheMissTokens: 0,
51
- cacheHitRate: 0,
52
- estimatedSavingsUsd: null,
53
- };
54
- }
55
- }
56
- // ── Core ──
57
- get stats() {
58
- return this._stats;
59
- }
60
- async run(input, opts) {
61
- const maxSteps = opts?.maxSteps ?? 10;
62
- const onToolCall = opts?.onToolCall;
63
- const onStep = opts?.onStep;
64
- let step = 0;
65
- let result = await this.send(input);
66
- while (result.toolCalls.length > 0 && step < maxSteps) {
67
- step++;
68
- for (const call of result.toolCalls) {
69
- const executor = this._toolExecutors.get(call.function.name);
70
- if (executor) {
71
- // Auto-execute when tool definition includes execute().
72
- let parsed;
73
- try {
74
- parsed = JSON.parse(call.function.arguments);
75
- }
76
- catch {
77
- parsed = {};
78
- }
79
- const output = await executor(parsed);
80
- this._log.append({
81
- role: "tool",
82
- tool_call_id: call.id,
83
- content: output,
84
- });
85
- }
86
- else if (onToolCall) {
87
- const r = await onToolCall(call);
88
- this._log.append({
89
- role: "tool",
90
- tool_call_id: call.id,
91
- content: r.isError ? `ERROR: ${r.output}` : r.output,
92
- });
93
- }
94
- else {
95
- // No executor and no onToolCall — stop loop, return current result.
96
- return result;
97
- }
98
- }
99
- onStep?.({ step, content: result.content, toolCalls: result.toolCalls });
100
- result = await this._callModel();
101
- }
102
- return result;
103
- }
104
- async send(input) {
105
- this._log.append({ role: "user", content: input });
106
- return this._callModel();
107
- }
108
- async *stream(input) {
109
- this._log.append({ role: "user", content: input });
110
- const prefix = this._prefix.toMessages();
111
- const history = this._log.toFullHistory();
112
- yield* this._adapter.stream(prefix, history, this._prefix.tools());
113
- }
114
- async submitToolResult(result) {
115
- this._log.append({
116
- role: "tool",
117
- tool_call_id: result.toolCallId,
118
- content: result.isError ? `ERROR: ${result.output}` : result.output,
119
- });
120
- return this._callModel();
121
- }
122
- /**
123
- * Stream-compatible entry for AI SDK (useChat) integration.
124
- *
125
- * Accepts UIMessages from `useChat()`, converts them to ChatMessages,
126
- * hydrates prior history, then streams the last user message.
127
- *
128
- * When tools with `execute` are present, uses `run()` for auto-execution.
129
- * Otherwise uses `stream()` for plain text streaming.
130
- *
131
- * Cache-first: only `_log` is modified via hydrate(), `_prefix` is untouched.
132
- */
133
- async *sdkStream(messages) {
134
- // Convert UIMessages → ChatMessages (system role is already in prefix).
135
- const chatMessages = messages
136
- .filter((m) => m.role !== "system")
137
- .map((m) => ({
138
- role: m.role,
139
- content: m.content,
140
- }));
141
- if (chatMessages.length === 0) {
142
- yield { type: "text-delta", delta: "" };
143
- yield { type: "done", usage: { promptTokens: 0, completionTokens: 0 } };
144
- return;
145
- }
146
- // Last message is the current user input; everything before it is history.
147
- const lastMsg = chatMessages.pop();
148
- if (chatMessages.length > 0) {
149
- this.hydrate(chatMessages);
150
- }
151
- // If the agent has tools with auto-execute, use run() for full tool loop.
152
- if (this._toolExecutors.size > 0) {
153
- const result = await this.run(lastMsg.content);
154
- yield { type: "text-delta", delta: result.content };
155
- yield { type: "done", usage: result.usage };
156
- return;
157
- }
158
- // Plain text: stream normally.
159
- yield* this.stream(lastMsg.content);
160
- }
161
- addTool(specOrName, def) {
162
- if (typeof specOrName === "string") {
163
- // addTool(name, def)
164
- const name = specOrName;
165
- const d = def;
166
- const spec = definitionToSpec(name, d);
167
- this._prefix.addTool(spec);
168
- if (d.execute) {
169
- this._toolExecutors.set(name, d.execute);
170
- }
171
- }
172
- else {
173
- // addTool(spec)
174
- this._prefix.addTool(specOrName);
175
- }
176
- }
177
- removeTool(name) {
178
- this._prefix.removeTool(name);
179
- this._toolExecutors.delete(name);
180
- }
181
- addFewShot(msg) {
182
- this._prefix.addFewShot(msg);
183
- }
184
- removeFewShot(index) {
185
- return this._prefix.removeFewShot(index);
186
- }
187
- // ── Keep-alive ──
188
- keepAlive(intervalMs) {
189
- // Delegate to adapter if it provides a custom keep-alive (e.g. Gemini).
190
- if (this._adapter.keepAlive) {
191
- return this._adapter.keepAlive(this._prefix.toMessages());
192
- }
193
- // Default: periodic ping to maintain server-side KV cache.
194
- const ms = intervalMs ?? 120_000;
195
- if (this._keepAliveTimer)
196
- clearInterval(this._keepAliveTimer);
197
- this._keepAliveTimer = setInterval(() => {
198
- this._adapter
199
- .chat(this._prefix.toMessages(), [{ role: "user", content: "ping" }], undefined)
200
- .catch(() => {
201
- /* keep-alive failure is silent */
202
- });
203
- }, ms);
204
- return { stop: () => this._stopKeepAlive() };
205
- }
206
- // ── Hydrate ──
207
- /** Restore conversation state from external history. */
208
- hydrate(messages) {
209
- this._log.hydrate(messages);
210
- }
211
- // ── Lifecycle ──
212
- clearLog() {
213
- this._log = new MessageLog();
214
- }
215
- setSystem(system) {
216
- this._prefix = new StablePrefix({
217
- system,
218
- tools: this._prefix.tools(),
219
- });
220
- }
221
- // ── Private ──
222
- /** Resolve history, applying ContextStrategy (prefix is read-only). */
223
- _resolveHistory() {
224
- const prefix = this._prefix.toMessages();
225
- let history = this._log.toFullHistory();
226
- if (this._context) {
227
- const ctxMax = this._adapter.contextWindow;
228
- const prepared = this._context.prepare(prefix, history, ctxMax);
229
- if (prepared.modified) {
230
- this._emit("context:truncated", {
231
- droppedCount: prepared.droppedCount,
232
- summary: prepared.summary,
233
- });
234
- }
235
- return prepared.history;
236
- }
237
- return history;
238
- }
239
- async _callModel() {
240
- const prefix = this._prefix.toMessages();
241
- const history = this._resolveHistory();
242
- const tools = this._prefix.tools();
243
- const { content, toolCalls, usage } = await this._adapter.chat(prefix, history, tools.length > 0 ? tools : undefined);
244
- // Apply repair.
245
- let repairedCalls = toolCalls;
246
- if (this._repair && toolCalls.length > 0) {
247
- const rr = this._repair.repair(toolCalls, content);
248
- repairedCalls = rr.toolCalls;
249
- if (rr.fixed > 0 || rr.suppressed > 0) {
250
- this._emit("repair:applied", {
251
- fixed: rr.fixed,
252
- suppressed: rr.suppressed,
253
- notes: rr.notes,
254
- });
255
- }
256
- }
257
- // Append assistant message.
258
- const assistantMsg = { role: "assistant", content };
259
- if (repairedCalls.length > 0)
260
- assistantMsg.tool_calls = repairedCalls;
261
- this._log.append(assistantMsg);
262
- // Update stats.
263
- this._stats.turns++;
264
- this._stats.totalPromptTokens += usage.promptTokens;
265
- this._stats.totalCompletionTokens += usage.completionTokens;
266
- if (this._stats.caching && usage.caching) {
267
- this._stats.caching.totalCacheHitTokens += usage.caching.hitTokens;
268
- this._stats.caching.totalCacheMissTokens += usage.caching.missTokens;
269
- const total = this._stats.caching.totalCacheHitTokens + this._stats.caching.totalCacheMissTokens;
270
- this._stats.caching.cacheHitRate =
271
- total > 0 ? this._stats.caching.totalCacheHitTokens / total : 0;
272
- this._stats.caching.estimatedSavingsUsd = this._computeSavings(this._stats.caching.totalCacheHitTokens);
273
- if (usage.caching.missTokens > 0 && this._stats.turns > 1) {
274
- this._emit("cache:miss", {
275
- type: "unknown",
276
- detail: `missTokens: ${usage.caching.missTokens}`,
277
- });
278
- }
279
- }
280
- return { content, toolCalls: repairedCalls, usage };
281
- }
282
- _emit(event, payload) {
283
- const handlers = this._listeners.get(event);
284
- if (!handlers)
285
- return;
286
- for (const fn of handlers) {
287
- try {
288
- fn(event, payload);
289
- }
290
- catch {
291
- /* silent */
292
- }
293
- }
294
- }
295
- _stopKeepAlive() {
296
- if (this._keepAliveTimer) {
297
- clearInterval(this._keepAliveTimer);
298
- this._keepAliveTimer = null;
299
- }
300
- }
301
- _computeSavings(cacheHitTokens) {
302
- if (!this._adapter.pricing)
303
- return null;
304
- return ((cacheHitTokens / 1000) *
305
- (this._adapter.pricing.inputPricePer1k - this._adapter.pricing.cachedInputPricePer1k));
306
- }
307
- }
308
- //# sourceMappingURL=session-impl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-impl.js","sourceRoot":"","sources":["../src/session-impl.ts"],"names":[],"mappings":"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"}
package/dist/session.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=strategies.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strategies.js","sourceRoot":"","sources":["../src/strategies.ts"],"names":[],"mappings":""}