@lssm/lib.ai-agent 0.0.0-canary-20251206160926

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 (56) hide show
  1. package/README.md +41 -0
  2. package/dist/agent/agent-factory.d.ts +103 -0
  3. package/dist/agent/agent-factory.js +1 -0
  4. package/dist/agent/contract-spec-agent.d.ts +74 -0
  5. package/dist/agent/contract-spec-agent.js +1 -0
  6. package/dist/agent/index.d.ts +3 -0
  7. package/dist/agent/index.js +1 -0
  8. package/dist/approval/index.d.ts +2 -0
  9. package/dist/approval/index.js +1 -0
  10. package/dist/approval/workflow.d.ts +155 -0
  11. package/dist/approval/workflow.js +1 -0
  12. package/dist/index.d.ts +23 -0
  13. package/dist/index.js +1 -0
  14. package/dist/knowledge/index.d.ts +2 -0
  15. package/dist/knowledge/index.js +1 -0
  16. package/dist/knowledge/injector.d.ts +37 -0
  17. package/dist/knowledge/injector.js +13 -0
  18. package/dist/memory/in-memory.d.ts +21 -0
  19. package/dist/memory/in-memory.js +2 -0
  20. package/dist/memory/index.d.ts +3 -0
  21. package/dist/memory/index.js +1 -0
  22. package/dist/memory/manager.d.ts +41 -0
  23. package/dist/memory/manager.js +1 -0
  24. package/dist/schema/index.d.ts +3 -0
  25. package/dist/schema/index.js +1 -0
  26. package/dist/schema/json-schema-to-zod.d.ts +54 -0
  27. package/dist/schema/json-schema-to-zod.js +1 -0
  28. package/dist/schema/schema-output.d.ts +76 -0
  29. package/dist/schema/schema-output.js +1 -0
  30. package/dist/session/index.d.ts +2 -0
  31. package/dist/session/index.js +1 -0
  32. package/dist/session/store.d.ts +73 -0
  33. package/dist/session/store.js +1 -0
  34. package/dist/spec/index.d.ts +3 -0
  35. package/dist/spec/index.js +1 -0
  36. package/dist/spec/registry.d.ts +77 -0
  37. package/dist/spec/registry.js +1 -0
  38. package/dist/spec/spec.d.ts +129 -0
  39. package/dist/spec/spec.js +1 -0
  40. package/dist/telemetry/adapter.d.ts +72 -0
  41. package/dist/telemetry/adapter.js +1 -0
  42. package/dist/telemetry/index.d.ts +2 -0
  43. package/dist/telemetry/index.js +1 -0
  44. package/dist/tools/index.d.ts +5 -0
  45. package/dist/tools/index.js +1 -0
  46. package/dist/tools/knowledge-tool.d.ts +20 -0
  47. package/dist/tools/knowledge-tool.js +9 -0
  48. package/dist/tools/mcp-client.d.ts +58 -0
  49. package/dist/tools/mcp-client.js +1 -0
  50. package/dist/tools/mcp-server.d.ts +45 -0
  51. package/dist/tools/mcp-server.js +1 -0
  52. package/dist/tools/tool-adapter.d.ts +49 -0
  53. package/dist/tools/tool-adapter.js +1 -0
  54. package/dist/types.d.ts +194 -0
  55. package/dist/types.js +0 -0
  56. package/package.json +74 -0
@@ -0,0 +1,49 @@
1
+ import { AgentToolConfig } from "../spec/spec.js";
2
+ import { ToolExecutionContext, ToolHandler } from "../types.js";
3
+ import { Tool } from "ai";
4
+
5
+ //#region src/tools/tool-adapter.d.ts
6
+
7
+ /**
8
+ * Convert ContractSpec AgentToolConfig to AI SDK CoreTool.
9
+ *
10
+ * @param specTool - The tool configuration from AgentSpec
11
+ * @param handler - The handler function for the tool
12
+ * @param context - Partial context to inject into handler calls
13
+ * @returns AI SDK CoreTool
14
+ */
15
+ declare function specToolToAISDKTool(specTool: AgentToolConfig, handler: ToolHandler, context?: Partial<ToolExecutionContext>): Tool<any, any>;
16
+ /**
17
+ * Convert multiple ContractSpec tool configs to AI SDK tools.
18
+ *
19
+ * @param specTools - Array of tool configurations
20
+ * @param handlers - Map of tool name to handler function
21
+ * @param context - Partial context to inject into handler calls
22
+ * @returns Record of AI SDK tools keyed by name
23
+ */
24
+ declare function specToolsToAISDKTools(specTools: AgentToolConfig[], handlers: Map<string, ToolHandler>, context?: Partial<ToolExecutionContext>): Record<string, Tool<any, any>>;
25
+ /**
26
+ * Type-safe tool handler builder.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const handler = createToolHandler<{ query: string }>((input, ctx) => {
31
+ * return `Searched for: ${input.query}`;
32
+ * });
33
+ * ```
34
+ */
35
+ declare function createToolHandler<TInput = unknown, TOutput = string>(handler: (input: TInput, context: ToolExecutionContext) => Promise<TOutput> | TOutput): ToolHandler<TInput, TOutput>;
36
+ /**
37
+ * Build a tool handlers map from an object.
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const handlers = buildToolHandlers({
42
+ * search: async (input: { query: string }) => `Found: ${input.query}`,
43
+ * calculate: async (input: { a: number, b: number }) => `${input.a + input.b}`,
44
+ * });
45
+ * ```
46
+ */
47
+ declare function buildToolHandlers(handlersObj: Record<string, ToolHandler>): Map<string, ToolHandler>;
48
+ //#endregion
49
+ export { buildToolHandlers, createToolHandler, specToolToAISDKTool, specToolsToAISDKTools };
@@ -0,0 +1 @@
1
+ import{jsonSchemaToZodSafe as e}from"../schema/json-schema-to-zod.js";import{tool as t}from"ai";function n(n,r,i={}){return t({description:n.description??n.name,inputSchema:e(n.schema),needsApproval:n.requiresApproval??!n.automationSafe,execute:async e=>{let t=await r(e,{agentId:i.agentId??`unknown`,sessionId:i.sessionId??`unknown`,tenantId:i.tenantId,actorId:i.actorId,metadata:i.metadata,signal:i.signal});return typeof t==`string`?t:JSON.stringify(t)}})}function r(e,t,r={}){let i={};for(let a of e){let e=t.get(a.name);if(!e)throw Error(`Missing handler for tool: ${a.name}`);i[a.name]=n(a,e,r)}return i}function i(e){return async(t,n)=>e(t,n)}function a(e){return new Map(Object.entries(e))}export{a as buildToolHandlers,i as createToolHandler,n as specToolToAISDKTool,r as specToolsToAISDKTools};
@@ -0,0 +1,194 @@
1
+ import { LanguageModelUsage, ModelMessage, StepResult, ToolSet } from "ai";
2
+
3
+ //#region src/types.d.ts
4
+
5
+ /**
6
+ * Simplified tool call type for ContractSpec usage.
7
+ * Compatible with AI SDK v6 TypedToolCall.
8
+ */
9
+ interface ToolCallInfo {
10
+ type: 'tool-call';
11
+ toolCallId: string;
12
+ toolName: string;
13
+ args: unknown;
14
+ }
15
+ /**
16
+ * Simplified tool result type for ContractSpec usage.
17
+ * Compatible with AI SDK v6 TypedToolResult.
18
+ */
19
+ interface ToolResultInfo {
20
+ type: 'tool-result';
21
+ toolCallId: string;
22
+ toolName: string;
23
+ output: unknown;
24
+ }
25
+ /**
26
+ * Extended message type that adds metadata support to ModelMessage.
27
+ * Used for session memory tracking.
28
+ */
29
+ interface AgentMessage {
30
+ role: 'user' | 'assistant' | 'system' | 'tool';
31
+ content: string | {
32
+ type: string;
33
+ text?: string;
34
+ [key: string]: unknown;
35
+ }[];
36
+ metadata?: Record<string, string>;
37
+ }
38
+ type AgentStatus = 'idle' | 'running' | 'waiting' | 'completed' | 'failed' | 'escalated';
39
+ type AgentEventName = 'agent.session.created' | 'agent.session.updated' | 'agent.step.started' | 'agent.step.completed' | 'agent.tool.called' | 'agent.tool.completed' | 'agent.tool.failed' | 'agent.tool.approval_requested' | 'agent.escalated' | 'agent.completed' | 'agent.failed';
40
+ interface AgentEventPayload {
41
+ sessionId: string;
42
+ agentId: string;
43
+ tenantId?: string;
44
+ stepIndex?: number;
45
+ toolName?: string;
46
+ metadata?: Record<string, unknown>;
47
+ }
48
+ /**
49
+ * Runtime context passed to agent calls via AI SDK v6 callOptionsSchema.
50
+ * Maps to ContractSpec's tenant/actor system.
51
+ */
52
+ interface AgentCallOptions {
53
+ /** Tenant scoping for guardrails and data isolation */
54
+ tenantId?: string;
55
+ /** Unique end-user identifier (for personalization) */
56
+ actorId?: string;
57
+ /** Session to resume; new session created when omitted */
58
+ sessionId?: string;
59
+ /** Arbitrary metadata forwarded to events and tool handlers */
60
+ metadata?: Record<string, string>;
61
+ }
62
+ interface AgentSessionState {
63
+ sessionId: string;
64
+ agentId: string;
65
+ tenantId?: string;
66
+ actorId?: string;
67
+ status: AgentStatus;
68
+ messages: ModelMessage[];
69
+ steps: StepResult<ToolSet>[];
70
+ createdAt: Date;
71
+ updatedAt: Date;
72
+ metadata?: Record<string, string>;
73
+ }
74
+ interface AgentGenerateParams {
75
+ /** User prompt or message */
76
+ prompt: string;
77
+ /** System prompt override (appended to agent instructions) */
78
+ systemOverride?: string;
79
+ /** Runtime context options */
80
+ options?: AgentCallOptions;
81
+ /** Maximum number of steps/iterations */
82
+ maxSteps?: number;
83
+ /** Abort signal for cancellation */
84
+ signal?: AbortSignal;
85
+ }
86
+ interface AgentStreamParams extends AgentGenerateParams {
87
+ /** Called when a step completes */
88
+ onStepFinish?: (step: StepResult<ToolSet>) => void | Promise<void>;
89
+ }
90
+ interface AgentGenerateResult<TOutput = string> {
91
+ /** The final text response */
92
+ text: string;
93
+ /** Structured output if configured */
94
+ output?: TOutput;
95
+ /** All steps taken during generation */
96
+ steps: StepResult<ToolSet>[];
97
+ /** All tool calls made during generation */
98
+ toolCalls: ToolCallInfo[];
99
+ /** All tool results */
100
+ toolResults: ToolResultInfo[];
101
+ /** Reason generation finished */
102
+ finishReason: 'stop' | 'tool-calls' | 'length' | 'content-filter' | 'error' | 'other' | 'unknown';
103
+ /** Token usage statistics */
104
+ usage?: LanguageModelUsage;
105
+ /** Updated session state */
106
+ session?: AgentSessionState;
107
+ /** Whether approval is pending for a tool call */
108
+ pendingApproval?: {
109
+ toolName: string;
110
+ toolCallId: string;
111
+ args: unknown;
112
+ };
113
+ }
114
+ /**
115
+ * Context provided to tool handlers during execution.
116
+ */
117
+ interface ToolExecutionContext {
118
+ agentId: string;
119
+ sessionId: string;
120
+ tenantId?: string;
121
+ actorId?: string;
122
+ metadata?: Record<string, string>;
123
+ signal?: AbortSignal;
124
+ }
125
+ /**
126
+ * Handler function for a tool.
127
+ */
128
+ type ToolHandler<TInput = unknown, TOutput = string> = (input: TInput, context: ToolExecutionContext) => Promise<TOutput>;
129
+ interface AgentStepMetrics {
130
+ agentId: string;
131
+ stepIndex: number;
132
+ toolCalls: {
133
+ toolName: string;
134
+ durationMs?: number;
135
+ success: boolean;
136
+ error?: string;
137
+ }[];
138
+ finishReason: string;
139
+ usage?: LanguageModelUsage;
140
+ timestamp: Date;
141
+ }
142
+ type AgentEventEmitter = (event: AgentEventName, payload: AgentEventPayload) => void | Promise<void>;
143
+ /** @deprecated Use AgentGenerateParams instead */
144
+ interface AgentRunRequestInput {
145
+ agent: string;
146
+ version?: number;
147
+ input: string;
148
+ tenantId?: string;
149
+ actorId?: string;
150
+ sessionId?: string;
151
+ metadata?: Record<string, string>;
152
+ instructionsOverride?: string;
153
+ }
154
+ /** @deprecated Use AgentGenerateResult instead */
155
+ interface AgentRunResult {
156
+ session: AgentSessionState;
157
+ outputText: string;
158
+ confidence: number;
159
+ iterations: number;
160
+ requiresEscalation: boolean;
161
+ approvalRequestId?: string;
162
+ finishReason: string;
163
+ toolInvocations: AgentToolInvocation[];
164
+ }
165
+ /** @deprecated Use ToolCallInfo instead */
166
+ interface AgentToolInvocation {
167
+ name: string;
168
+ arguments: unknown;
169
+ startedAt: Date;
170
+ completedAt?: Date;
171
+ durationMs?: number;
172
+ success: boolean;
173
+ error?: string;
174
+ }
175
+ /** @deprecated Use ToolExecutionContext instead */
176
+ interface AgentToolContext {
177
+ session: AgentSessionState;
178
+ tenantId?: string;
179
+ actorId?: string;
180
+ metadata?: Record<string, string>;
181
+ emit: (event: AgentEventName, payload: AgentEventPayload) => void;
182
+ }
183
+ /** @deprecated Use ToolHandler instead */
184
+ interface AgentToolResult {
185
+ content: string;
186
+ citations?: {
187
+ label: string;
188
+ url?: string;
189
+ snippet?: string;
190
+ }[];
191
+ metadata?: Record<string, string>;
192
+ }
193
+ //#endregion
194
+ export { AgentCallOptions, AgentEventEmitter, AgentEventName, AgentEventPayload, AgentGenerateParams, AgentGenerateResult, AgentMessage, AgentRunRequestInput, AgentRunResult, AgentSessionState, AgentStatus, AgentStepMetrics, AgentStreamParams, AgentToolContext, AgentToolInvocation, AgentToolResult, ToolCallInfo, ToolExecutionContext, ToolHandler, ToolResultInfo };
package/dist/types.js ADDED
File without changes
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "@lssm/lib.ai-agent",
3
+ "version": "0.0.0-canary-20251206160926",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "README.md"
11
+ ],
12
+ "scripts": {
13
+ "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
14
+ "build": "bun build:bundle && bun build:types",
15
+ "build:bundle": "tsdown",
16
+ "build:types": "tsc --noEmit",
17
+ "dev": "bun build:bundle --watch",
18
+ "clean": "rimraf dist .turbo",
19
+ "lint": "bun lint:fix",
20
+ "lint:fix": "eslint src --fix",
21
+ "lint:check": "eslint src",
22
+ "test": "bun test"
23
+ },
24
+ "dependencies": {
25
+ "ai": "beta",
26
+ "@ai-sdk/mcp": "beta",
27
+ "@ai-sdk/mistral": "beta",
28
+ "@ai-sdk/openai": "beta",
29
+ "@ai-sdk/anthropic": "beta",
30
+ "@modelcontextprotocol/sdk": "^1.24.3",
31
+ "@lssm/lib.contracts": "workspace:*",
32
+ "@lssm/lib.knowledge": "workspace:*",
33
+ "zod": "^4.1.13"
34
+ },
35
+ "devDependencies": {
36
+ "@lssm/tool.tsdown": "workspace:*",
37
+ "@lssm/tool.typescript": "workspace:*",
38
+ "tsdown": "^0.17.0",
39
+ "typescript": "^5.9.3"
40
+ },
41
+ "exports": {
42
+ ".": "./dist/index.js",
43
+ "./agent": "./dist/agent/index.js",
44
+ "./agent/agent-factory": "./dist/agent/agent-factory.js",
45
+ "./agent/contract-spec-agent": "./dist/agent/contract-spec-agent.js",
46
+ "./approval": "./dist/approval/index.js",
47
+ "./approval/workflow": "./dist/approval/workflow.js",
48
+ "./knowledge": "./dist/knowledge/index.js",
49
+ "./knowledge/injector": "./dist/knowledge/injector.js",
50
+ "./memory": "./dist/memory/index.js",
51
+ "./memory/in-memory": "./dist/memory/in-memory.js",
52
+ "./memory/manager": "./dist/memory/manager.js",
53
+ "./schema": "./dist/schema/index.js",
54
+ "./schema/json-schema-to-zod": "./dist/schema/json-schema-to-zod.js",
55
+ "./schema/schema-output": "./dist/schema/schema-output.js",
56
+ "./session": "./dist/session/index.js",
57
+ "./session/store": "./dist/session/store.js",
58
+ "./spec": "./dist/spec/index.js",
59
+ "./spec/registry": "./dist/spec/registry.js",
60
+ "./spec/spec": "./dist/spec/spec.js",
61
+ "./telemetry": "./dist/telemetry/index.js",
62
+ "./telemetry/adapter": "./dist/telemetry/adapter.js",
63
+ "./tools": "./dist/tools/index.js",
64
+ "./tools/knowledge-tool": "./dist/tools/knowledge-tool.js",
65
+ "./tools/mcp-client": "./dist/tools/mcp-client.js",
66
+ "./tools/mcp-server": "./dist/tools/mcp-server.js",
67
+ "./tools/tool-adapter": "./dist/tools/tool-adapter.js",
68
+ "./types": "./dist/types.js",
69
+ "./*": "./*"
70
+ },
71
+ "publishConfig": {
72
+ "access": "public"
73
+ }
74
+ }