@roj-ai/shared 0.1.3 → 0.1.4

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 (41) hide show
  1. package/dist/chat-protocol.js +2 -0
  2. package/dist/chat-protocol.js.map +1 -0
  3. package/dist/index.js +13 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/lib/domain-utils.js +23 -0
  6. package/dist/lib/domain-utils.js.map +1 -0
  7. package/dist/lib/ids.js +14 -0
  8. package/dist/lib/ids.js.map +1 -0
  9. package/dist/lib/result.js +21 -0
  10. package/dist/lib/result.js.map +1 -0
  11. package/dist/projections/agent-detail-projection.js +494 -0
  12. package/dist/projections/agent-detail-projection.js.map +1 -0
  13. package/dist/projections/agent-registry.js +26 -0
  14. package/dist/projections/agent-registry.js.map +1 -0
  15. package/dist/projections/agent-tree-projection.js +193 -0
  16. package/dist/projections/agent-tree-projection.js.map +1 -0
  17. package/dist/projections/chat-debug.js +213 -0
  18. package/dist/projections/chat-debug.js.map +1 -0
  19. package/dist/projections/events.js +8 -0
  20. package/dist/projections/events.js.map +1 -0
  21. package/dist/projections/index.js +12 -0
  22. package/dist/projections/index.js.map +1 -0
  23. package/dist/projections/mailbox.js +88 -0
  24. package/dist/projections/mailbox.js.map +1 -0
  25. package/dist/projections/metrics.js +82 -0
  26. package/dist/projections/metrics.js.map +1 -0
  27. package/dist/projections/protocol-status.js +21 -0
  28. package/dist/projections/protocol-status.js.map +1 -0
  29. package/dist/projections/services-projection.js +67 -0
  30. package/dist/projections/services-projection.js.map +1 -0
  31. package/dist/projections/session-info.js +34 -0
  32. package/dist/projections/session-info.js.map +1 -0
  33. package/dist/projections/timeline.js +186 -0
  34. package/dist/projections/timeline.js.map +1 -0
  35. package/dist/projections/types.js +5 -0
  36. package/dist/projections/types.js.map +1 -0
  37. package/dist/rpc/client.js +125 -0
  38. package/dist/rpc/client.js.map +1 -0
  39. package/dist/rpc/index.js +8 -0
  40. package/dist/rpc/index.js.map +1 -0
  41. package/package.json +7 -7
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Protocol status conversion.
3
+ */
4
+ /**
5
+ * Convert domain AgentStatus to protocol AgentStatus.
6
+ */
7
+ export function toProtocolStatus(status) {
8
+ switch (status) {
9
+ case 'pending':
10
+ return 'idle';
11
+ case 'inferring':
12
+ return 'thinking';
13
+ case 'tool_exec':
14
+ return 'responding';
15
+ case 'errored':
16
+ return 'error';
17
+ case 'paused':
18
+ return 'paused';
19
+ }
20
+ }
21
+ //# sourceMappingURL=protocol-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-status.js","sourceRoot":"","sources":["../../src/projections/protocol-status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAyB;IACzD,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,SAAS;YACb,OAAO,MAAM,CAAA;QACd,KAAK,WAAW;YACf,OAAO,UAAU,CAAA;QAClB,KAAK,WAAW;YACf,OAAO,YAAY,CAAA;QACpB,KAAK,SAAS;YACb,OAAO,OAAO,CAAA;QACf,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAA;IACjB,CAAC;AACF,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Services projection - tracks service states from events.
3
+ *
4
+ * Replaces selectPluginState(sessionState, 'services') for client-side use.
5
+ * Handles service_status_changed and session_restarted events.
6
+ */
7
+ export function createServicesProjectionState() {
8
+ return { services: new Map() };
9
+ }
10
+ export function applyEventToServices(state, event) {
11
+ switch (event.type) {
12
+ case 'service_status_changed': {
13
+ const newServices = new Map(state.services);
14
+ const existing = newServices.get(event.serviceType);
15
+ if (!existing && event.toStatus === 'starting') {
16
+ newServices.set(event.serviceType, {
17
+ serviceType: event.serviceType,
18
+ status: event.toStatus,
19
+ startedAt: event.timestamp,
20
+ });
21
+ }
22
+ else if (existing) {
23
+ const updated = {
24
+ ...existing,
25
+ status: event.toStatus,
26
+ };
27
+ if (event.toStatus === 'starting') {
28
+ updated.startedAt = event.timestamp;
29
+ updated.error = undefined;
30
+ }
31
+ if (event.toStatus === 'ready') {
32
+ updated.readyAt = event.timestamp;
33
+ if (event.port !== undefined) {
34
+ updated.port = event.port;
35
+ }
36
+ }
37
+ if (event.toStatus === 'failed' && event.error) {
38
+ updated.error = event.error;
39
+ }
40
+ if (event.toStatus === 'stopped') {
41
+ updated.stoppedAt = event.timestamp;
42
+ }
43
+ newServices.set(event.serviceType, updated);
44
+ }
45
+ return { ...state, services: newServices };
46
+ }
47
+ case 'session_restarted': {
48
+ let changed = false;
49
+ const newServices = new Map(state.services);
50
+ for (const [serviceType, entry] of state.services) {
51
+ if (entry.status === 'starting' || entry.status === 'ready') {
52
+ newServices.set(serviceType, {
53
+ ...entry,
54
+ status: 'stopped',
55
+ port: undefined,
56
+ stoppedAt: event.timestamp,
57
+ });
58
+ changed = true;
59
+ }
60
+ }
61
+ return changed ? { ...state, services: newServices } : state;
62
+ }
63
+ default:
64
+ return state;
65
+ }
66
+ }
67
+ //# sourceMappingURL=services-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services-projection.js","sourceRoot":"","sources":["../../src/projections/services-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Session info projection - tracks basic session metadata.
3
+ *
4
+ * Extracts session-level information (id, preset, status, timestamps)
5
+ * from lifecycle events without requiring full SessionState.
6
+ */
7
+ export function createSessionInfoState() {
8
+ return {
9
+ id: null,
10
+ presetId: null,
11
+ status: 'active',
12
+ createdAt: null,
13
+ };
14
+ }
15
+ export function applyEventToSessionInfo(state, event) {
16
+ switch (event.type) {
17
+ case 'session_created': {
18
+ return {
19
+ ...state,
20
+ id: event.sessionId,
21
+ presetId: event.presetId,
22
+ createdAt: event.timestamp,
23
+ workspaceDir: event.workspaceDir,
24
+ };
25
+ }
26
+ case 'session_closed':
27
+ return { ...state, status: 'closed', closedAt: event.timestamp };
28
+ case 'session_reopened':
29
+ return { ...state, status: 'active', closedAt: undefined };
30
+ default:
31
+ return state;
32
+ }
33
+ }
34
+ //# sourceMappingURL=session-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-info.js","sourceRoot":"","sources":["../../src/projections/session-info.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,UAAU,sBAAsB;IACrC,OAAO;QACN,EAAE,EAAE,IAAI;QACR,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,IAAI;KACf,CAAA;AACF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAuB,EAAE,KAAsB;IACtF,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACxB,OAAO;gBACN,GAAG,KAAK;gBACR,EAAE,EAAE,KAAK,CAAC,SAAS;gBACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;aAChC,CAAA;QACF,CAAC;QACD,KAAK,gBAAgB;YACpB,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;QACjE,KAAK,kBAAkB;YACtB,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;QAC3D;YACC,OAAO,KAAK,CAAA;IACd,CAAC;AACF,CAAC"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Timeline projection - tracks LLM calls, tool executions, and compactions.
3
+ */
4
+ export function createTimelineState() {
5
+ return {
6
+ items: [],
7
+ pendingInferences: new Map(),
8
+ pendingTools: new Map(),
9
+ };
10
+ }
11
+ /**
12
+ * Apply event to timeline state.
13
+ * @param registry Agent registry for name lookups
14
+ * @param llmCallMap Optional map for enriching LLM calls with detailed metrics
15
+ */
16
+ export function applyEventToTimeline(state, event, registry, llmCallMap) {
17
+ const getAgentName = (agentId) => {
18
+ return registry.names.get(agentId) ?? 'unknown';
19
+ };
20
+ switch (event.type) {
21
+ case 'inference_started': {
22
+ const newPending = new Map(state.pendingInferences);
23
+ newPending.set(event.agentId, event);
24
+ return { ...state, pendingInferences: newPending };
25
+ }
26
+ case 'inference_completed': {
27
+ const startEvent = state.pendingInferences.get(event.agentId);
28
+ const newPending = new Map(state.pendingInferences);
29
+ newPending.delete(event.agentId);
30
+ const llmCall = event.llmCallId && llmCallMap ? llmCallMap.get(event.llmCallId) : undefined;
31
+ const metrics = llmCall?.metrics ?? event.metrics;
32
+ const newItem = {
33
+ id: event.llmCallId ?? `llm-${event.agentId}-${event.timestamp}`,
34
+ type: 'llm',
35
+ agentId: event.agentId,
36
+ agentName: getAgentName(event.agentId),
37
+ startedAt: startEvent?.timestamp ?? event.timestamp,
38
+ completedAt: event.timestamp,
39
+ durationMs: startEvent ? event.timestamp - startEvent.timestamp : undefined,
40
+ status: 'success',
41
+ model: event.metrics.model,
42
+ promptTokens: metrics.promptTokens,
43
+ completionTokens: metrics.completionTokens,
44
+ cachedTokens: metrics.cachedTokens,
45
+ cacheWriteTokens: metrics.cacheWriteTokens,
46
+ cost: metrics.cost,
47
+ llmCallId: event.llmCallId,
48
+ };
49
+ return {
50
+ ...state,
51
+ items: [...state.items, newItem],
52
+ pendingInferences: newPending,
53
+ };
54
+ }
55
+ case 'inference_failed': {
56
+ const startEvent = state.pendingInferences.get(event.agentId);
57
+ const newPending = new Map(state.pendingInferences);
58
+ newPending.delete(event.agentId);
59
+ const newItem = {
60
+ id: event.llmCallId ?? `llm-${event.agentId}-${event.timestamp}`,
61
+ type: 'llm',
62
+ agentId: event.agentId,
63
+ agentName: getAgentName(event.agentId),
64
+ startedAt: startEvent?.timestamp ?? event.timestamp,
65
+ completedAt: event.timestamp,
66
+ durationMs: startEvent ? event.timestamp - startEvent.timestamp : undefined,
67
+ status: 'error',
68
+ error: event.error,
69
+ llmCallId: event.llmCallId,
70
+ };
71
+ return {
72
+ ...state,
73
+ items: [...state.items, newItem],
74
+ pendingInferences: newPending,
75
+ };
76
+ }
77
+ case 'tool_started': {
78
+ const newPending = new Map(state.pendingTools);
79
+ newPending.set(event.toolCallId, event);
80
+ return { ...state, pendingTools: newPending };
81
+ }
82
+ case 'tool_completed': {
83
+ const startEvent = state.pendingTools.get(event.toolCallId);
84
+ const newPending = new Map(state.pendingTools);
85
+ newPending.delete(event.toolCallId);
86
+ const newItem = {
87
+ id: event.toolCallId,
88
+ type: 'tool',
89
+ agentId: event.agentId,
90
+ agentName: getAgentName(event.agentId),
91
+ startedAt: startEvent?.timestamp ?? event.timestamp,
92
+ completedAt: event.timestamp,
93
+ durationMs: startEvent ? event.timestamp - startEvent.timestamp : undefined,
94
+ status: 'success',
95
+ toolName: startEvent?.toolName,
96
+ toolCallId: event.toolCallId,
97
+ toolInput: startEvent?.input,
98
+ toolResult: event.result,
99
+ };
100
+ return {
101
+ ...state,
102
+ items: [...state.items, newItem],
103
+ pendingTools: newPending,
104
+ };
105
+ }
106
+ case 'tool_failed': {
107
+ const startEvent = state.pendingTools.get(event.toolCallId);
108
+ const newPending = new Map(state.pendingTools);
109
+ newPending.delete(event.toolCallId);
110
+ const newItem = {
111
+ id: event.toolCallId,
112
+ type: 'tool',
113
+ agentId: event.agentId,
114
+ agentName: getAgentName(event.agentId),
115
+ startedAt: startEvent?.timestamp ?? event.timestamp,
116
+ completedAt: event.timestamp,
117
+ durationMs: startEvent ? event.timestamp - startEvent.timestamp : undefined,
118
+ status: 'error',
119
+ toolName: startEvent?.toolName,
120
+ toolCallId: event.toolCallId,
121
+ toolInput: startEvent?.input,
122
+ error: event.error,
123
+ };
124
+ return {
125
+ ...state,
126
+ items: [...state.items, newItem],
127
+ pendingTools: newPending,
128
+ };
129
+ }
130
+ case 'context_compacted': {
131
+ const newItem = {
132
+ id: `compaction-${event.agentId}-${event.timestamp}`,
133
+ type: 'compaction',
134
+ agentId: event.agentId,
135
+ agentName: getAgentName(event.agentId),
136
+ startedAt: event.timestamp,
137
+ completedAt: event.timestamp,
138
+ status: 'success',
139
+ originalTokens: event.originalTokens,
140
+ compactedTokens: event.compactedTokens,
141
+ messagesRemoved: event.messagesRemoved,
142
+ };
143
+ return {
144
+ ...state,
145
+ items: [...state.items, newItem],
146
+ };
147
+ }
148
+ default:
149
+ return state;
150
+ }
151
+ }
152
+ /**
153
+ * Get timeline items including running items from pending state.
154
+ */
155
+ export function getTimelineItems(state, registry) {
156
+ const items = [...state.items];
157
+ // Add running items for pending inferences
158
+ for (const [agentId, startEvent] of state.pendingInferences) {
159
+ items.push({
160
+ id: `llm-running-${agentId}-${startEvent.timestamp}`,
161
+ type: 'llm',
162
+ agentId: agentId,
163
+ agentName: registry.names.get(agentId) ?? 'unknown',
164
+ startedAt: startEvent.timestamp,
165
+ status: 'running',
166
+ });
167
+ }
168
+ // Add running items for pending tools
169
+ for (const [toolCallId, startEvent] of state.pendingTools) {
170
+ items.push({
171
+ id: toolCallId,
172
+ type: 'tool',
173
+ agentId: startEvent.agentId,
174
+ agentName: registry.names.get(startEvent.agentId) ?? 'unknown',
175
+ startedAt: startEvent.timestamp,
176
+ status: 'running',
177
+ toolName: startEvent.toolName,
178
+ toolCallId: toolCallId,
179
+ toolInput: startEvent.input,
180
+ });
181
+ }
182
+ // Sort by startedAt
183
+ items.sort((a, b) => a.startedAt - b.startedAt);
184
+ return items;
185
+ }
186
+ //# sourceMappingURL=timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/projections/timeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * View model types for client-side projections.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/projections/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Type-safe RPC Client
3
+ *
4
+ * Provides a fully typed interface for calling RPC methods.
5
+ * All method names and input/output types are validated at compile time.
6
+ *
7
+ * Supports both single calls and batch calls:
8
+ * - Single: rpc.call("method", input) -> Result<output, RpcErrorInfo>
9
+ * - Batch: rpc.batch(b => [b.add("m1", i1), b.add("m2", i2)]) -> Result<[o1, o2], RpcErrorInfo>
10
+ */
11
+ import { Err, Ok } from '../lib/result.js';
12
+ /**
13
+ * RPC error class for backwards compatibility.
14
+ */
15
+ export class RpcError extends Error {
16
+ status;
17
+ error;
18
+ constructor(status, error) {
19
+ super(error.message);
20
+ this.status = status;
21
+ this.error = error;
22
+ this.name = 'RpcError';
23
+ }
24
+ }
25
+ /**
26
+ * Batch call builder. Collects typed entries for a batch RPC request.
27
+ */
28
+ export class BatchBuilder {
29
+ add(method, input) {
30
+ return { method, input };
31
+ }
32
+ }
33
+ /**
34
+ * Type-safe RPC client for calling server methods.
35
+ */
36
+ export class RpcClient {
37
+ baseUrl;
38
+ projectId = null;
39
+ constructor(baseUrl = '') {
40
+ this.baseUrl = baseUrl;
41
+ }
42
+ /**
43
+ * Get the base URL for non-RPC requests.
44
+ */
45
+ getBaseUrl() {
46
+ return this.baseUrl;
47
+ }
48
+ /**
49
+ * Set the project ID for DO-based RPC calls.
50
+ * When set, the projectId is added as a query parameter to /rpc requests.
51
+ */
52
+ setProjectId(projectId) {
53
+ this.projectId = projectId;
54
+ }
55
+ /**
56
+ * Get the currently configured project ID.
57
+ */
58
+ getProjectId() {
59
+ return this.projectId;
60
+ }
61
+ getRpcUrl() {
62
+ let url = `${this.baseUrl}/rpc`;
63
+ if (this.projectId) {
64
+ url += `?project=${encodeURIComponent(this.projectId)}`;
65
+ }
66
+ return url;
67
+ }
68
+ /**
69
+ * Call an RPC method with type-safe input and output.
70
+ */
71
+ async call(method, input) {
72
+ const response = await fetch(this.getRpcUrl(), {
73
+ method: 'POST',
74
+ headers: { 'Content-Type': 'application/json' },
75
+ body: JSON.stringify({ method, input }),
76
+ credentials: 'include',
77
+ });
78
+ const data = (await response.json());
79
+ // Transport error (non-200 for invalid JSON, missing method)
80
+ if (!response.ok) {
81
+ return Err(data.error ?? { type: 'transport_error', message: 'Request failed' });
82
+ }
83
+ // Application result
84
+ if (data.ok) {
85
+ return Ok(data.value);
86
+ }
87
+ return Err(data.error ?? { type: 'unknown_error', message: 'Unknown error' });
88
+ }
89
+ /**
90
+ * Execute multiple RPC calls as a batch.
91
+ */
92
+ async batch(buildCalls) {
93
+ const entries = buildCalls(new BatchBuilder());
94
+ const response = await fetch(this.getRpcUrl(), {
95
+ method: 'POST',
96
+ headers: { 'Content-Type': 'application/json' },
97
+ body: JSON.stringify({
98
+ batch: entries.map(e => ({ method: e.method, input: e.input })),
99
+ }),
100
+ credentials: 'include',
101
+ });
102
+ const data = (await response.json());
103
+ // Transport error
104
+ if (!response.ok) {
105
+ return Err(data.error ?? { type: 'transport_error', message: 'Request failed' });
106
+ }
107
+ const results = data.results ?? [];
108
+ // Check if any call in the batch failed
109
+ for (const entry of results) {
110
+ if (!entry.ok && entry.error) {
111
+ return Err(entry.error);
112
+ }
113
+ }
114
+ // If fewer results than entries, the batch was short-circuited by an error
115
+ if (results.length < entries.length) {
116
+ const lastResult = results[results.length - 1];
117
+ if (lastResult && !lastResult.ok && lastResult.error) {
118
+ return Err(lastResult.error);
119
+ }
120
+ return Err({ type: 'batch_incomplete', message: 'Batch execution was interrupted' });
121
+ }
122
+ return Ok(results.map(r => r.value));
123
+ }
124
+ }
125
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * RPC Module - Shared re-exports for client/CLI consumers.
3
+ */
4
+ // Client
5
+ export { BatchBuilder, RpcClient, RpcError } from './client.js';
6
+ // Result types
7
+ export { Err, flatMapResult, isErr, isOk, mapResult, Ok, unwrapOr, unwrapOrThrow } from '../lib/result.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rpc/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,SAAS;AACT,OAAO,EAAE,YAAY,EAAmB,SAAS,EAAE,QAAQ,EAAqB,MAAM,aAAa,CAAA;AAEnG,eAAe;AACf,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA"}
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@roj-ai/shared",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "type": "module",
5
- "main": "./src/index.ts",
5
+ "main": "./dist/index.js",
6
6
  "exports": {
7
7
  ".": {
8
8
  "types": "./dist/index.d.ts",
9
- "import": "./src/index.ts",
10
- "default": "./src/index.ts"
9
+ "import": "./dist/index.js",
10
+ "default": "./dist/index.js"
11
11
  },
12
12
  "./rpc": {
13
13
  "types": "./dist/rpc/index.d.ts",
14
- "import": "./src/rpc/index.ts",
15
- "default": "./src/rpc/index.ts"
14
+ "import": "./dist/rpc/index.js",
15
+ "default": "./dist/rpc/index.js"
16
16
  }
17
17
  },
18
18
  "files": [
@@ -38,7 +38,7 @@
38
38
  "zod": "^4.1.12"
39
39
  },
40
40
  "devDependencies": {
41
- "@roj-ai/sdk": "^0.1.3",
41
+ "@roj-ai/sdk": "^0.1.4",
42
42
  "typescript": "^5.7.2"
43
43
  },
44
44
  "types": "./dist/index.d.ts"