@nexalab/agent-sdk 0.1.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.
Files changed (236) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +518 -0
  3. package/bin/nexa.mjs +33 -0
  4. package/dist/advanced-memory.d.ts +32 -0
  5. package/dist/advanced-memory.d.ts.map +1 -0
  6. package/dist/advanced-memory.js +54 -0
  7. package/dist/advanced-memory.js.map +1 -0
  8. package/dist/agent-builder.d.ts +60 -0
  9. package/dist/agent-builder.d.ts.map +1 -0
  10. package/dist/agent-builder.js +141 -0
  11. package/dist/agent-builder.js.map +1 -0
  12. package/dist/approvals.d.ts +34 -0
  13. package/dist/approvals.d.ts.map +1 -0
  14. package/dist/approvals.js +54 -0
  15. package/dist/approvals.js.map +1 -0
  16. package/dist/artifacts.d.ts +13 -0
  17. package/dist/artifacts.d.ts.map +1 -0
  18. package/dist/artifacts.js +13 -0
  19. package/dist/artifacts.js.map +1 -0
  20. package/dist/cache.d.ts +17 -0
  21. package/dist/cache.d.ts.map +1 -0
  22. package/dist/cache.js +29 -0
  23. package/dist/cache.js.map +1 -0
  24. package/dist/completion-gate.d.ts +5 -0
  25. package/dist/completion-gate.d.ts.map +1 -0
  26. package/dist/completion-gate.js +20 -0
  27. package/dist/completion-gate.js.map +1 -0
  28. package/dist/console-chat.d.ts +110 -0
  29. package/dist/console-chat.d.ts.map +1 -0
  30. package/dist/console-chat.js +284 -0
  31. package/dist/console-chat.js.map +1 -0
  32. package/dist/context.d.ts +45 -0
  33. package/dist/context.d.ts.map +1 -0
  34. package/dist/context.js +92 -0
  35. package/dist/context.js.map +1 -0
  36. package/dist/evals.d.ts +38 -0
  37. package/dist/evals.d.ts.map +1 -0
  38. package/dist/evals.js +37 -0
  39. package/dist/evals.js.map +1 -0
  40. package/dist/event-bus.d.ts +28 -0
  41. package/dist/event-bus.d.ts.map +1 -0
  42. package/dist/event-bus.js +28 -0
  43. package/dist/event-bus.js.map +1 -0
  44. package/dist/file-storage.d.ts +25 -0
  45. package/dist/file-storage.d.ts.map +1 -0
  46. package/dist/file-storage.js +100 -0
  47. package/dist/file-storage.js.map +1 -0
  48. package/dist/guardrails.d.ts +44 -0
  49. package/dist/guardrails.d.ts.map +1 -0
  50. package/dist/guardrails.js +37 -0
  51. package/dist/guardrails.js.map +1 -0
  52. package/dist/harness.d.ts +26 -0
  53. package/dist/harness.d.ts.map +1 -0
  54. package/dist/harness.js +49 -0
  55. package/dist/harness.js.map +1 -0
  56. package/dist/hooks.d.ts +58 -0
  57. package/dist/hooks.d.ts.map +1 -0
  58. package/dist/hooks.js +16 -0
  59. package/dist/hooks.js.map +1 -0
  60. package/dist/http-adapter.d.ts +13 -0
  61. package/dist/http-adapter.d.ts.map +1 -0
  62. package/dist/http-adapter.js +33 -0
  63. package/dist/http-adapter.js.map +1 -0
  64. package/dist/index.d.ts +58 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +58 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/kernel.d.ts +90 -0
  69. package/dist/kernel.d.ts.map +1 -0
  70. package/dist/kernel.js +251 -0
  71. package/dist/kernel.js.map +1 -0
  72. package/dist/knowledge.d.ts +35 -0
  73. package/dist/knowledge.d.ts.map +1 -0
  74. package/dist/knowledge.js +89 -0
  75. package/dist/knowledge.js.map +1 -0
  76. package/dist/local-tool-executor.d.ts +26 -0
  77. package/dist/local-tool-executor.d.ts.map +1 -0
  78. package/dist/local-tool-executor.js +30 -0
  79. package/dist/local-tool-executor.js.map +1 -0
  80. package/dist/loop-guard.d.ts +15 -0
  81. package/dist/loop-guard.d.ts.map +1 -0
  82. package/dist/loop-guard.js +12 -0
  83. package/dist/loop-guard.js.map +1 -0
  84. package/dist/manifest.d.ts +43 -0
  85. package/dist/manifest.d.ts.map +1 -0
  86. package/dist/manifest.js +31 -0
  87. package/dist/manifest.js.map +1 -0
  88. package/dist/mcp.d.ts +55 -0
  89. package/dist/mcp.d.ts.map +1 -0
  90. package/dist/mcp.js +175 -0
  91. package/dist/mcp.js.map +1 -0
  92. package/dist/memory.d.ts +32 -0
  93. package/dist/memory.d.ts.map +1 -0
  94. package/dist/memory.js +40 -0
  95. package/dist/memory.js.map +1 -0
  96. package/dist/mission-runtime.d.ts +106 -0
  97. package/dist/mission-runtime.d.ts.map +1 -0
  98. package/dist/mission-runtime.js +196 -0
  99. package/dist/mission-runtime.js.map +1 -0
  100. package/dist/model-harness.d.ts +23 -0
  101. package/dist/model-harness.d.ts.map +1 -0
  102. package/dist/model-harness.js +7 -0
  103. package/dist/model-harness.js.map +1 -0
  104. package/dist/model-router.d.ts +60 -0
  105. package/dist/model-router.d.ts.map +1 -0
  106. package/dist/model-router.js +90 -0
  107. package/dist/model-router.js.map +1 -0
  108. package/dist/multi-agent.d.ts +56 -0
  109. package/dist/multi-agent.d.ts.map +1 -0
  110. package/dist/multi-agent.js +69 -0
  111. package/dist/multi-agent.js.map +1 -0
  112. package/dist/native-tool-loop.d.ts +70 -0
  113. package/dist/native-tool-loop.d.ts.map +1 -0
  114. package/dist/native-tool-loop.js +92 -0
  115. package/dist/native-tool-loop.js.map +1 -0
  116. package/dist/openai-agent.d.ts +75 -0
  117. package/dist/openai-agent.d.ts.map +1 -0
  118. package/dist/openai-agent.js +190 -0
  119. package/dist/openai-agent.js.map +1 -0
  120. package/dist/openai-compatible.d.ts +117 -0
  121. package/dist/openai-compatible.d.ts.map +1 -0
  122. package/dist/openai-compatible.js +486 -0
  123. package/dist/openai-compatible.js.map +1 -0
  124. package/dist/otel.d.ts +12 -0
  125. package/dist/otel.d.ts.map +1 -0
  126. package/dist/otel.js +35 -0
  127. package/dist/otel.js.map +1 -0
  128. package/dist/permissions.d.ts +6 -0
  129. package/dist/permissions.d.ts.map +1 -0
  130. package/dist/permissions.js +33 -0
  131. package/dist/permissions.js.map +1 -0
  132. package/dist/plan-validator.d.ts +9 -0
  133. package/dist/plan-validator.d.ts.map +1 -0
  134. package/dist/plan-validator.js +27 -0
  135. package/dist/plan-validator.js.map +1 -0
  136. package/dist/policy.d.ts +27 -0
  137. package/dist/policy.d.ts.map +1 -0
  138. package/dist/policy.js +37 -0
  139. package/dist/policy.js.map +1 -0
  140. package/dist/postgres-storage.d.ts +33 -0
  141. package/dist/postgres-storage.d.ts.map +1 -0
  142. package/dist/postgres-storage.js +80 -0
  143. package/dist/postgres-storage.js.map +1 -0
  144. package/dist/provider-capabilities.d.ts +13 -0
  145. package/dist/provider-capabilities.d.ts.map +1 -0
  146. package/dist/provider-capabilities.js +19 -0
  147. package/dist/provider-capabilities.js.map +1 -0
  148. package/dist/providers.d.ts +14 -0
  149. package/dist/providers.d.ts.map +1 -0
  150. package/dist/providers.js +69 -0
  151. package/dist/providers.js.map +1 -0
  152. package/dist/queue.d.ts +29 -0
  153. package/dist/queue.d.ts.map +1 -0
  154. package/dist/queue.js +36 -0
  155. package/dist/queue.js.map +1 -0
  156. package/dist/redis-storage.d.ts +36 -0
  157. package/dist/redis-storage.d.ts.map +1 -0
  158. package/dist/redis-storage.js +68 -0
  159. package/dist/redis-storage.js.map +1 -0
  160. package/dist/replay.d.ts +13 -0
  161. package/dist/replay.d.ts.map +1 -0
  162. package/dist/replay.js +32 -0
  163. package/dist/replay.js.map +1 -0
  164. package/dist/runtime.d.ts +54 -0
  165. package/dist/runtime.d.ts.map +1 -0
  166. package/dist/runtime.js +218 -0
  167. package/dist/runtime.js.map +1 -0
  168. package/dist/sdk.d.ts +43 -0
  169. package/dist/sdk.d.ts.map +1 -0
  170. package/dist/sdk.js +82 -0
  171. package/dist/sdk.js.map +1 -0
  172. package/dist/secrets.d.ts +9 -0
  173. package/dist/secrets.d.ts.map +1 -0
  174. package/dist/secrets.js +23 -0
  175. package/dist/secrets.js.map +1 -0
  176. package/dist/sessions.d.ts +44 -0
  177. package/dist/sessions.d.ts.map +1 -0
  178. package/dist/sessions.js +76 -0
  179. package/dist/sessions.js.map +1 -0
  180. package/dist/skills.d.ts +12 -0
  181. package/dist/skills.d.ts.map +1 -0
  182. package/dist/skills.js +13 -0
  183. package/dist/skills.js.map +1 -0
  184. package/dist/smoke.d.ts +8 -0
  185. package/dist/smoke.d.ts.map +1 -0
  186. package/dist/smoke.js +5 -0
  187. package/dist/smoke.js.map +1 -0
  188. package/dist/sqlite-storage.d.ts +30 -0
  189. package/dist/sqlite-storage.d.ts.map +1 -0
  190. package/dist/sqlite-storage.js +52 -0
  191. package/dist/sqlite-storage.js.map +1 -0
  192. package/dist/storage.d.ts +74 -0
  193. package/dist/storage.d.ts.map +1 -0
  194. package/dist/storage.js +83 -0
  195. package/dist/storage.js.map +1 -0
  196. package/dist/structured-output.d.ts +14 -0
  197. package/dist/structured-output.d.ts.map +1 -0
  198. package/dist/structured-output.js +24 -0
  199. package/dist/structured-output.js.map +1 -0
  200. package/dist/telemetry.d.ts +27 -0
  201. package/dist/telemetry.d.ts.map +1 -0
  202. package/dist/telemetry.js +40 -0
  203. package/dist/telemetry.js.map +1 -0
  204. package/dist/tenancy.d.ts +9 -0
  205. package/dist/tenancy.d.ts.map +1 -0
  206. package/dist/tenancy.js +8 -0
  207. package/dist/tenancy.js.map +1 -0
  208. package/dist/tool-factory.d.ts +25 -0
  209. package/dist/tool-factory.d.ts.map +1 -0
  210. package/dist/tool-factory.js +38 -0
  211. package/dist/tool-factory.js.map +1 -0
  212. package/dist/tool-orchestrator.d.ts +89 -0
  213. package/dist/tool-orchestrator.d.ts.map +1 -0
  214. package/dist/tool-orchestrator.js +102 -0
  215. package/dist/tool-orchestrator.js.map +1 -0
  216. package/dist/tool-registry.d.ts +52 -0
  217. package/dist/tool-registry.d.ts.map +1 -0
  218. package/dist/tool-registry.js +19 -0
  219. package/dist/tool-registry.js.map +1 -0
  220. package/dist/types.d.ts +1020 -0
  221. package/dist/types.d.ts.map +1 -0
  222. package/dist/types.js +115 -0
  223. package/dist/types.js.map +1 -0
  224. package/dist/vector-memory.d.ts +19 -0
  225. package/dist/vector-memory.d.ts.map +1 -0
  226. package/dist/vector-memory.js +58 -0
  227. package/dist/vector-memory.js.map +1 -0
  228. package/dist/workflow.d.ts +65 -0
  229. package/dist/workflow.d.ts.map +1 -0
  230. package/dist/workflow.js +102 -0
  231. package/dist/workflow.js.map +1 -0
  232. package/dist/workspace.d.ts +35 -0
  233. package/dist/workspace.d.ts.map +1 -0
  234. package/dist/workspace.js +131 -0
  235. package/dist/workspace.js.map +1 -0
  236. package/package.json +223 -0
package/dist/skills.js ADDED
@@ -0,0 +1,13 @@
1
+ import { AgentTool } from "./agent-builder.js";
2
+ export function defineSkill(definition) {
3
+ return definition;
4
+ }
5
+ export function skillsToInstructions(skills) {
6
+ return skills
7
+ .map((skill) => `### Skill: ${skill.id}\n${skill.description}\n\n${skill.instructions}`)
8
+ .join("\n\n");
9
+ }
10
+ export function skillsToToolRegistrations(skills) {
11
+ return skills.flatMap((skill) => (skill.tools ?? []).map((tool) => (tool instanceof AgentTool ? tool.asRegistration() : tool)));
12
+ }
13
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,MAAM,UAAU,WAAW,CAAC,UAA2B;IACrD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAyB;IAC5D,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,WAAW,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC;SACvF,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAyB;IACjE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC9F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function smokeCheckPackage(input: {
2
+ exports: Record<string, unknown>;
3
+ required: string[];
4
+ }): {
5
+ ok: boolean;
6
+ missing: string[];
7
+ };
8
+ //# sourceMappingURL=smoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoke.d.ts","sourceRoot":"","sources":["../src/smoke.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAGrC"}
package/dist/smoke.js ADDED
@@ -0,0 +1,5 @@
1
+ export function smokeCheckPackage(input) {
2
+ const missing = input.required.filter((name) => !(name in input.exports));
3
+ return { ok: missing.length === 0, missing };
4
+ }
5
+ //# sourceMappingURL=smoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoke.js","sourceRoot":"","sources":["../src/smoke.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,KAGjC;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { ApprovalRequest } from "./approvals.js";
2
+ import type { NexaSdkEvent } from "./event-bus.js";
3
+ import type { MemoryRecord } from "./memory.js";
4
+ import type { NexaStorage } from "./storage.js";
5
+ import type { AgentRunSnapshot } from "./types.js";
6
+ export type SqliteStatement = {
7
+ run(...params: unknown[]): unknown;
8
+ get(...params: unknown[]): unknown;
9
+ all(...params: unknown[]): unknown[];
10
+ };
11
+ export type SqliteDriver = {
12
+ exec(sql: string): unknown;
13
+ prepare(sql: string): SqliteStatement;
14
+ };
15
+ export declare class SqliteStorage implements NexaStorage {
16
+ private readonly db;
17
+ constructor(db: SqliteDriver);
18
+ saveRun(run: AgentRunSnapshot): void;
19
+ getRun(runId: string): AgentRunSnapshot | undefined;
20
+ listRuns(): AgentRunSnapshot[];
21
+ appendEvent(event: NexaSdkEvent): void;
22
+ listEvents(): NexaSdkEvent[];
23
+ saveMemory(record: MemoryRecord): void;
24
+ listMemories(): MemoryRecord[];
25
+ saveApproval(approval: ApprovalRequest): void;
26
+ getApproval(id: string): ApprovalRequest | undefined;
27
+ listApprovals(status?: ApprovalRequest["status"]): ApprovalRequest[];
28
+ }
29
+ export declare function createSqliteStorage(db: SqliteDriver): SqliteStorage;
30
+ //# sourceMappingURL=sqlite-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-storage.d.ts","sourceRoot":"","sources":["../src/sqlite-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACnC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACnC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;CACvC,CAAC;AAEF,qBAAa,aAAc,YAAW,WAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY;IAS7C,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAIpC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAKnD,QAAQ,IAAI,gBAAgB,EAAE;IAI9B,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAItC,UAAU,IAAI,YAAY,EAAE;IAI5B,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAItC,YAAY,IAAI,YAAY,EAAE;IAI9B,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAI7C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAKpD,aAAa,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,eAAe,EAAE;CAOrE;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,aAAa,CAEnE"}
@@ -0,0 +1,52 @@
1
+ export class SqliteStorage {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ this.db.exec([
6
+ "create table if not exists nexa_runs (run_id text primary key, payload text not null, updated_at text not null)",
7
+ "create table if not exists nexa_events (id text primary key, type text not null, payload text not null, at text not null)",
8
+ "create table if not exists nexa_memories (id text primary key, payload text not null, created_at text not null)",
9
+ "create table if not exists nexa_approvals (id text primary key, status text not null, payload text not null, created_at text not null)"
10
+ ].join(";"));
11
+ }
12
+ saveRun(run) {
13
+ this.db.prepare("insert or replace into nexa_runs (run_id, payload, updated_at) values (?, ?, ?)").run(run.runId, JSON.stringify(run), run.updatedAt);
14
+ }
15
+ getRun(runId) {
16
+ const row = this.db.prepare("select payload from nexa_runs where run_id = ?").get(runId);
17
+ return row ? JSON.parse(row.payload) : undefined;
18
+ }
19
+ listRuns() {
20
+ return this.db.prepare("select payload from nexa_runs order by updated_at desc").all().map((row) => JSON.parse(row.payload));
21
+ }
22
+ appendEvent(event) {
23
+ this.db.prepare("insert or replace into nexa_events (id, type, payload, at) values (?, ?, ?, ?)").run(event.id, event.type, JSON.stringify(event), event.at);
24
+ }
25
+ listEvents() {
26
+ return this.db.prepare("select payload from nexa_events order by at asc").all().map((row) => JSON.parse(row.payload));
27
+ }
28
+ saveMemory(record) {
29
+ this.db.prepare("insert or replace into nexa_memories (id, payload, created_at) values (?, ?, ?)").run(record.id, JSON.stringify(record), record.createdAt);
30
+ }
31
+ listMemories() {
32
+ return this.db.prepare("select payload from nexa_memories order by created_at desc").all().map((row) => JSON.parse(row.payload));
33
+ }
34
+ saveApproval(approval) {
35
+ this.db.prepare("insert or replace into nexa_approvals (id, status, payload, created_at) values (?, ?, ?, ?)").run(approval.id, approval.status, JSON.stringify(approval), approval.createdAt);
36
+ }
37
+ getApproval(id) {
38
+ const row = this.db.prepare("select payload from nexa_approvals where id = ?").get(id);
39
+ return row ? JSON.parse(row.payload) : undefined;
40
+ }
41
+ listApprovals(status) {
42
+ const statement = status
43
+ ? this.db.prepare("select payload from nexa_approvals where status = ? order by created_at desc")
44
+ : this.db.prepare("select payload from nexa_approvals order by created_at desc");
45
+ const rows = status ? statement.all(status) : statement.all();
46
+ return rows.map((row) => JSON.parse(row.payload));
47
+ }
48
+ }
49
+ export function createSqliteStorage(db) {
50
+ return new SqliteStorage(db);
51
+ }
52
+ //# sourceMappingURL=sqlite-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-storage.js","sourceRoot":"","sources":["../src/sqlite-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import type { AgentRunSnapshot, JsonObject } from "./types.js";
2
+ import type { MemoryRecord } from "./memory.js";
3
+ import type { ApprovalRequest } from "./approvals.js";
4
+ import type { NexaSdkEvent } from "./event-bus.js";
5
+ import type { ChatMessage } from "./openai-compatible.js";
6
+ export type RunStore = {
7
+ saveRun(run: AgentRunSnapshot): Promise<void> | void;
8
+ getRun(runId: string): Promise<AgentRunSnapshot | undefined> | AgentRunSnapshot | undefined;
9
+ listRuns?(): Promise<AgentRunSnapshot[]> | AgentRunSnapshot[];
10
+ };
11
+ export type MemoryAdapter = {
12
+ saveMemory(record: MemoryRecord): Promise<void> | void;
13
+ listMemories(): Promise<MemoryRecord[]> | MemoryRecord[];
14
+ };
15
+ export type ApprovalStore = {
16
+ saveApproval(approval: ApprovalRequest): Promise<void> | void;
17
+ getApproval(id: string): Promise<ApprovalRequest | undefined> | ApprovalRequest | undefined;
18
+ listApprovals(status?: ApprovalRequest["status"]): Promise<ApprovalRequest[]> | ApprovalRequest[];
19
+ };
20
+ export type EventJournal = {
21
+ appendEvent(event: NexaSdkEvent): Promise<void> | void;
22
+ listEvents(): Promise<NexaSdkEvent[]> | NexaSdkEvent[];
23
+ };
24
+ export type SessionRecord = {
25
+ id: string;
26
+ messages: ChatMessage[];
27
+ metadata: JsonObject;
28
+ createdAt: string;
29
+ updatedAt: string;
30
+ };
31
+ export type SessionStore = {
32
+ saveSession(session: SessionRecord): Promise<void> | void;
33
+ getSession(id: string): Promise<SessionRecord | undefined> | SessionRecord | undefined;
34
+ listSessions?(): Promise<SessionRecord[]> | SessionRecord[];
35
+ deleteSession?(id: string): Promise<void> | void;
36
+ };
37
+ export type NexaStorage = Partial<RunStore & MemoryAdapter & ApprovalStore & EventJournal & SessionStore>;
38
+ export declare class InMemoryRunStore implements RunStore {
39
+ private readonly runs;
40
+ saveRun(run: AgentRunSnapshot): void;
41
+ getRun(runId: string): AgentRunSnapshot | undefined;
42
+ listRuns(): AgentRunSnapshot[];
43
+ }
44
+ export declare class InMemoryEventJournal implements EventJournal {
45
+ private readonly events;
46
+ appendEvent(event: NexaSdkEvent): void;
47
+ listEvents(): NexaSdkEvent[];
48
+ }
49
+ export declare function createInMemoryRunStore(): InMemoryRunStore;
50
+ export declare function createInMemoryEventJournal(): InMemoryEventJournal;
51
+ export declare class InMemorySessionStore implements SessionStore {
52
+ private readonly sessions;
53
+ saveSession(session: SessionRecord): void;
54
+ getSession(id: string): SessionRecord | undefined;
55
+ listSessions(): SessionRecord[];
56
+ deleteSession(id: string): void;
57
+ }
58
+ export declare function createInMemorySessionStore(): InMemorySessionStore;
59
+ export declare class InMemoryStorage implements NexaStorage {
60
+ private readonly runStore;
61
+ private readonly eventJournal;
62
+ private readonly sessionStore;
63
+ saveRun(run: AgentRunSnapshot): void;
64
+ getRun(runId: string): AgentRunSnapshot | undefined;
65
+ listRuns(): AgentRunSnapshot[];
66
+ appendEvent(event: NexaSdkEvent): void;
67
+ listEvents(): NexaSdkEvent[];
68
+ saveSession(session: SessionRecord): void;
69
+ getSession(id: string): SessionRecord | undefined;
70
+ listSessions(): SessionRecord[];
71
+ deleteSession(id: string): void;
72
+ }
73
+ export declare function createInMemoryStorage(): InMemoryStorage;
74
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ export class InMemoryRunStore {
2
+ runs = new Map();
3
+ saveRun(run) {
4
+ this.runs.set(run.runId, structuredClone(run));
5
+ }
6
+ getRun(runId) {
7
+ const run = this.runs.get(runId);
8
+ return run ? structuredClone(run) : undefined;
9
+ }
10
+ listRuns() {
11
+ return [...this.runs.values()].map((run) => structuredClone(run));
12
+ }
13
+ }
14
+ export class InMemoryEventJournal {
15
+ events = [];
16
+ appendEvent(event) {
17
+ this.events.push(structuredClone(event));
18
+ }
19
+ listEvents() {
20
+ return this.events.map((event) => structuredClone(event));
21
+ }
22
+ }
23
+ export function createInMemoryRunStore() {
24
+ return new InMemoryRunStore();
25
+ }
26
+ export function createInMemoryEventJournal() {
27
+ return new InMemoryEventJournal();
28
+ }
29
+ export class InMemorySessionStore {
30
+ sessions = new Map();
31
+ saveSession(session) {
32
+ this.sessions.set(session.id, structuredClone(session));
33
+ }
34
+ getSession(id) {
35
+ const session = this.sessions.get(id);
36
+ return session ? structuredClone(session) : undefined;
37
+ }
38
+ listSessions() {
39
+ return [...this.sessions.values()].map((session) => structuredClone(session));
40
+ }
41
+ deleteSession(id) {
42
+ this.sessions.delete(id);
43
+ }
44
+ }
45
+ export function createInMemorySessionStore() {
46
+ return new InMemorySessionStore();
47
+ }
48
+ export class InMemoryStorage {
49
+ runStore = new InMemoryRunStore();
50
+ eventJournal = new InMemoryEventJournal();
51
+ sessionStore = new InMemorySessionStore();
52
+ saveRun(run) {
53
+ this.runStore.saveRun(run);
54
+ }
55
+ getRun(runId) {
56
+ return this.runStore.getRun(runId);
57
+ }
58
+ listRuns() {
59
+ return this.runStore.listRuns();
60
+ }
61
+ appendEvent(event) {
62
+ this.eventJournal.appendEvent(event);
63
+ }
64
+ listEvents() {
65
+ return this.eventJournal.listEvents();
66
+ }
67
+ saveSession(session) {
68
+ this.sessionStore.saveSession(session);
69
+ }
70
+ getSession(id) {
71
+ return this.sessionStore.getSession(id);
72
+ }
73
+ listSessions() {
74
+ return this.sessionStore.listSessions();
75
+ }
76
+ deleteSession(id) {
77
+ this.sessionStore.deleteSession(id);
78
+ }
79
+ }
80
+ export function createInMemoryStorage() {
81
+ return new InMemoryStorage();
82
+ }
83
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ import type { JsonObject } from "./types.js";
3
+ export declare function zodSchemaToJsonSchema(schema: z.ZodTypeAny): JsonObject;
4
+ export type StructuredOutputResult<T> = {
5
+ ok: true;
6
+ data: T;
7
+ } | {
8
+ ok: false;
9
+ error: string;
10
+ raw: string;
11
+ };
12
+ export declare function structuredOutputInstruction(schema: z.ZodTypeAny, label?: string): string;
13
+ export declare function parseStructuredOutput<T>(schema: z.ZodType<T>, text: string): StructuredOutputResult<T>;
14
+ //# sourceMappingURL=structured-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,CAEtE;AAED,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACrB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,SAAW,GAAG,MAAM,CAG1F;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAQtG"}
@@ -0,0 +1,24 @@
1
+ import { zodToJsonSchema } from "zod-to-json-schema";
2
+ export function zodSchemaToJsonSchema(schema) {
3
+ return zodToJsonSchema(schema, { target: "jsonSchema7", $refStrategy: "none" });
4
+ }
5
+ export function structuredOutputInstruction(schema, label = "Output") {
6
+ const jsonSchema = zodSchemaToJsonSchema(schema);
7
+ return `Respond with ONLY a single JSON object (no prose, no markdown code fences) named "${label}" that satisfies this JSON Schema:\n${JSON.stringify(jsonSchema)}`;
8
+ }
9
+ export function parseStructuredOutput(schema, text) {
10
+ try {
11
+ const json = JSON.parse(extractJson(text));
12
+ const data = schema.parse(json);
13
+ return { ok: true, data };
14
+ }
15
+ catch (error) {
16
+ return { ok: false, error: error instanceof Error ? error.message : String(error), raw: text };
17
+ }
18
+ }
19
+ function extractJson(text) {
20
+ const trimmed = text.trim();
21
+ const fenced = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/i);
22
+ return fenced?.[1]?.trim() ?? trimmed;
23
+ }
24
+ //# sourceMappingURL=structured-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-output.js","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,CAA0B,CAAC;AAC3G,CAAC;AAMD,MAAM,UAAU,2BAA2B,CAAC,MAAoB,EAAE,KAAK,GAAG,QAAQ;IAChF,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,qFAAqF,KAAK,uCAAuC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;AACvK,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAI,MAAoB,EAAE,IAAY;IACzE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAY,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACjG,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC9D,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC;AACxC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { NexaSdkEvent } from "./event-bus.js";
2
+ import type { ToolTraceEvent } from "./tool-orchestrator.js";
3
+ import type { JsonObject } from "./types.js";
4
+ export type TelemetrySpan = {
5
+ id: string;
6
+ name: string;
7
+ attributes: JsonObject;
8
+ startedAt: string;
9
+ endedAt?: string;
10
+ error?: string;
11
+ };
12
+ export type TelemetrySink = {
13
+ onEvent?(event: NexaSdkEvent): void | Promise<void>;
14
+ onToolTrace?(event: ToolTraceEvent): void | Promise<void>;
15
+ onSpan?(span: TelemetrySpan): void | Promise<void>;
16
+ };
17
+ export declare class NexaTelemetry {
18
+ private readonly sink;
19
+ private readonly spans;
20
+ constructor(sink?: TelemetrySink);
21
+ event(event: NexaSdkEvent): void | Promise<void>;
22
+ toolTrace(event: ToolTraceEvent): void | Promise<void>;
23
+ startSpan(name: string, attributes?: JsonObject): TelemetrySpan;
24
+ endSpan(id: string, error?: unknown): Promise<TelemetrySpan>;
25
+ }
26
+ export declare function createTelemetry(sink?: TelemetrySink): NexaTelemetry;
27
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,WAAW,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,CAAC;AAEF,qBAAa,aAAa;IAGZ,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;gBAE7B,IAAI,GAAE,aAAkB;IAErD,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,UAAe,GAAG,aAAa;IAW7D,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;CAYnE;AAED,wBAAgB,eAAe,CAAC,IAAI,GAAE,aAAkB,GAAG,aAAa,CAEvE"}
@@ -0,0 +1,40 @@
1
+ export class NexaTelemetry {
2
+ sink;
3
+ spans = new Map();
4
+ constructor(sink = {}) {
5
+ this.sink = sink;
6
+ }
7
+ event(event) {
8
+ return this.sink.onEvent?.(event);
9
+ }
10
+ toolTrace(event) {
11
+ return this.sink.onToolTrace?.(event);
12
+ }
13
+ startSpan(name, attributes = {}) {
14
+ const span = {
15
+ id: crypto.randomUUID(),
16
+ name,
17
+ attributes,
18
+ startedAt: new Date().toISOString()
19
+ };
20
+ this.spans.set(span.id, span);
21
+ return span;
22
+ }
23
+ async endSpan(id, error) {
24
+ const span = this.spans.get(id);
25
+ if (!span)
26
+ throw new Error(`Telemetry span not found: ${id}`);
27
+ const ended = {
28
+ ...span,
29
+ endedAt: new Date().toISOString(),
30
+ ...(error ? { error: error instanceof Error ? error.message : String(error) } : {})
31
+ };
32
+ this.spans.set(id, ended);
33
+ await this.sink.onSpan?.(ended);
34
+ return ended;
35
+ }
36
+ }
37
+ export function createTelemetry(sink = {}) {
38
+ return new NexaTelemetry(sink);
39
+ }
40
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,aAAa;IAGK;IAFZ,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE1D,YAA6B,OAAsB,EAAE;QAAxB,SAAI,GAAJ,IAAI,CAAoB;IAAG,CAAC;IAEzD,KAAK,CAAC,KAAmB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,KAAqB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,aAAyB,EAAE;QACjD,MAAM,IAAI,GAAkB;YAC1B,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,IAAI;YACJ,UAAU;YACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,KAAe;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAkB;YAC3B,GAAG,IAAI;YACP,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpF,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,OAAsB,EAAE;IACtD,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type PermissionMatrix } from "./permissions.js";
2
+ import type { AgentToolRegistration } from "./openai-agent.js";
3
+ export type TenantContext = {
4
+ tenantId?: string;
5
+ userId?: string;
6
+ };
7
+ export declare function namespaceKey(context: TenantContext, key: string): string;
8
+ export declare function filterToolsByPermissions(tools: AgentToolRegistration[], permissions: PermissionMatrix): AgentToolRegistration[];
9
+ //# sourceMappingURL=tenancy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenancy.d.ts","sourceRoot":"","sources":["../src/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,WAAW,EAAE,gBAAgB,GAAG,qBAAqB,EAAE,CAE/H"}
@@ -0,0 +1,8 @@
1
+ import { isToolAllowedByAgentPermissions } from "./permissions.js";
2
+ export function namespaceKey(context, key) {
3
+ return [context.tenantId, context.userId, key].filter(Boolean).join(":");
4
+ }
5
+ export function filterToolsByPermissions(tools, permissions) {
6
+ return tools.filter((registration) => isToolAllowedByAgentPermissions(registration.tool.name, permissions));
7
+ }
8
+ //# sourceMappingURL=tenancy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../src/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAyB,MAAM,kBAAkB,CAAC;AAK1F,MAAM,UAAU,YAAY,CAAC,OAAsB,EAAE,GAAW;IAC9D,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAA8B,EAAE,WAA6B;IACpG,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,+BAA+B,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;AAC9G,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { z } from "zod";
2
+ import type { LocalToolContext, LocalToolHandler } from "./local-tool-executor.js";
3
+ import type { ToolDefinition, ToolExecutionResult } from "./tool-registry.js";
4
+ import type { JsonObject } from "./types.js";
5
+ import type { ChatTool } from "./openai-compatible.js";
6
+ export type SchemaLike = z.ZodTypeAny | JsonObject;
7
+ export type DefineSdkToolInput<TInput extends z.ZodTypeAny | undefined = undefined> = {
8
+ id: string;
9
+ name?: string;
10
+ description?: string;
11
+ capability: string;
12
+ version?: string;
13
+ provider?: string;
14
+ enabled?: boolean;
15
+ inputSchema?: TInput;
16
+ outputSchema?: SchemaLike;
17
+ handler: TInput extends z.ZodTypeAny ? (input: z.infer<TInput>, context: LocalToolContext) => Promise<ToolExecutionResult> | ToolExecutionResult : LocalToolHandler;
18
+ };
19
+ export type SdkToolRegistration = {
20
+ tool: ToolDefinition;
21
+ handler: LocalToolHandler;
22
+ };
23
+ export declare function defineSdkTool<TInput extends z.ZodTypeAny | undefined = undefined>(input: DefineSdkToolInput<TInput>): SdkToolRegistration;
24
+ export declare function toOpenAIChatTool(tool: ToolDefinition): ChatTool;
25
+ //# sourceMappingURL=tool-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-factory.d.ts","sourceRoot":"","sources":["../src/tool-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;AAEnD,MAAM,MAAM,kBAAkB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS,IAAI;IACpF,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,UAAU,GAChC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,GACzG,gBAAgB,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS,EAAE,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAmBzI;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,QAAQ,CAS/D"}
@@ -0,0 +1,38 @@
1
+ import { zodSchemaToJsonSchema } from "./structured-output.js";
2
+ export function defineSdkTool(input) {
3
+ const tool = {
4
+ id: input.id,
5
+ name: input.name ?? input.id,
6
+ capability: input.capability,
7
+ version: input.version ?? "1.0.0",
8
+ provider: input.provider ?? "local",
9
+ enabled: input.enabled ?? true,
10
+ ...(input.description ? { description: input.description } : {}),
11
+ ...(input.inputSchema ? { inputSchema: schemaToJsonObject(input.inputSchema) } : {}),
12
+ ...(input.outputSchema ? { outputSchema: schemaToJsonObject(input.outputSchema) } : {})
13
+ };
14
+ const handler = async (rawInput, context) => {
15
+ const parsed = input.inputSchema && isZodSchema(input.inputSchema) ? input.inputSchema.parse(rawInput) : rawInput;
16
+ return input.handler(parsed, context);
17
+ };
18
+ return { tool, handler };
19
+ }
20
+ export function toOpenAIChatTool(tool) {
21
+ return {
22
+ type: "function",
23
+ function: {
24
+ name: tool.id.replace(/[^a-zA-Z0-9_-]/g, "_"),
25
+ ...(tool.description ? { description: tool.description } : {}),
26
+ ...(tool.inputSchema ? { parameters: tool.inputSchema } : {})
27
+ }
28
+ };
29
+ }
30
+ function isZodSchema(value) {
31
+ return Boolean(value && typeof value === "object" && "_def" in value && "parse" in value);
32
+ }
33
+ function schemaToJsonObject(schema) {
34
+ if (isZodSchema(schema))
35
+ return zodSchemaToJsonSchema(schema);
36
+ return schema;
37
+ }
38
+ //# sourceMappingURL=tool-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-factory.js","sourceRoot":"","sources":["../src/tool-factory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAwB/D,MAAM,UAAU,aAAa,CAAsD,KAAiC;IAClH,MAAM,IAAI,GAAmB;QAC3B,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO;QACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,OAAO;QACnC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxF,CAAC;IAEF,MAAM,OAAO,GAAqB,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClH,OAAQ,KAAK,CAAC,OAA4B,CAAC,MAAoB,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAkB;IAC5C,IAAI,WAAW,CAAC,MAAM,CAAC;QAAE,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,89 @@
1
+ import type { ChatMessage } from "./openai-compatible.js";
2
+ import type { JsonObject } from "./types.js";
3
+ import type { ToolDefinition, ToolExecutor, ToolExecutionResult } from "./tool-registry.js";
4
+ export type ToolIntent = {
5
+ tool: ToolDefinition;
6
+ confidence: number;
7
+ reason: string;
8
+ };
9
+ export type ToolTraceEvent = {
10
+ type: "tool.routing.started";
11
+ input: string;
12
+ availableTools: Array<{
13
+ id: string;
14
+ capability: string;
15
+ }>;
16
+ } | {
17
+ type: "tool.routing.completed";
18
+ selectedTools: Array<{
19
+ id: string;
20
+ capability: string;
21
+ confidence: number;
22
+ reason: string;
23
+ }>;
24
+ } | {
25
+ type: "tool.loop.started";
26
+ maxRounds: number;
27
+ } | {
28
+ type: "tool.loop.round";
29
+ round: number;
30
+ selectedCount: number;
31
+ } | {
32
+ type: "tool.loop.completed";
33
+ rounds: number;
34
+ resultCount: number;
35
+ } | {
36
+ type: "tool.execution.started";
37
+ toolId: string;
38
+ capability: string;
39
+ } | {
40
+ type: "tool.execution.completed";
41
+ toolId: string;
42
+ result: ToolExecutionResult;
43
+ };
44
+ export type ToolRouter = {
45
+ select(input: {
46
+ text: string;
47
+ tools: ToolDefinition[];
48
+ }): Promise<ToolIntent[]> | ToolIntent[];
49
+ };
50
+ export type ToolOrchestratorOptions = {
51
+ router?: ToolRouter;
52
+ trace?: (event: ToolTraceEvent) => void;
53
+ };
54
+ export type ToolOrchestrationResult = {
55
+ selectedTools: ToolIntent[];
56
+ results: Array<{
57
+ tool: ToolDefinition;
58
+ result: ToolExecutionResult;
59
+ }>;
60
+ contextMessages: ChatMessage[];
61
+ };
62
+ export declare class CapabilityKeywordRouter implements ToolRouter {
63
+ select(input: {
64
+ text: string;
65
+ tools: ToolDefinition[];
66
+ }): ToolIntent[];
67
+ }
68
+ export declare class TransparentToolOrchestrator {
69
+ readonly executor: ToolExecutor;
70
+ private readonly router;
71
+ private readonly trace;
72
+ constructor(executor: ToolExecutor, options?: ToolOrchestratorOptions);
73
+ prepareTurn(input: {
74
+ text: string;
75
+ tools: ToolDefinition[];
76
+ taskId: string;
77
+ runId: string;
78
+ toolInput?: JsonObject;
79
+ }): Promise<ToolOrchestrationResult>;
80
+ runToolLoop(input: {
81
+ text: string;
82
+ tools: ToolDefinition[];
83
+ taskId: string;
84
+ runId: string;
85
+ maxRounds?: number;
86
+ toolInput?: JsonObject;
87
+ }): Promise<ToolOrchestrationResult>;
88
+ }
89
+ //# sourceMappingURL=tool-orchestrator.d.ts.map