@terminals-tech/agent-zero 1.0.1 → 2.0.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 (121) hide show
  1. package/dist/agency/commandRouter.d.ts +10 -0
  2. package/dist/agency/commandRouter.d.ts.map +1 -1
  3. package/dist/agency/commandRouter.js +206 -0
  4. package/dist/agency/commandRouter.js.map +1 -1
  5. package/dist/agency/runtime.d.ts +24 -0
  6. package/dist/agency/runtime.d.ts.map +1 -1
  7. package/dist/agency/runtime.js +103 -0
  8. package/dist/agency/runtime.js.map +1 -1
  9. package/dist/channels/gemini.d.ts +73 -0
  10. package/dist/channels/gemini.d.ts.map +1 -0
  11. package/dist/channels/gemini.js +246 -0
  12. package/dist/channels/gemini.js.map +1 -0
  13. package/dist/interop/a2a.d.ts +133 -0
  14. package/dist/interop/a2a.d.ts.map +1 -0
  15. package/dist/interop/a2a.js +357 -0
  16. package/dist/interop/a2a.js.map +1 -0
  17. package/dist/interop/index.d.ts +10 -0
  18. package/dist/interop/index.d.ts.map +1 -0
  19. package/dist/interop/index.js +10 -0
  20. package/dist/interop/index.js.map +1 -0
  21. package/dist/interop/mcp.d.ts +111 -0
  22. package/dist/interop/mcp.d.ts.map +1 -0
  23. package/dist/interop/mcp.js +337 -0
  24. package/dist/interop/mcp.js.map +1 -0
  25. package/dist/moltbook/approvalGate.d.ts +23 -0
  26. package/dist/moltbook/approvalGate.d.ts.map +1 -1
  27. package/dist/moltbook/approvalGate.js +45 -0
  28. package/dist/moltbook/approvalGate.js.map +1 -1
  29. package/dist/moltbook/attentionField.d.ts +14 -0
  30. package/dist/moltbook/attentionField.d.ts.map +1 -1
  31. package/dist/moltbook/attentionField.js +37 -1
  32. package/dist/moltbook/attentionField.js.map +1 -1
  33. package/dist/moltbook/daemon.d.ts +24 -0
  34. package/dist/moltbook/daemon.d.ts.map +1 -1
  35. package/dist/moltbook/daemon.js +164 -0
  36. package/dist/moltbook/daemon.js.map +1 -1
  37. package/dist/moltbook/responseComposer.d.ts +7 -2
  38. package/dist/moltbook/responseComposer.d.ts.map +1 -1
  39. package/dist/moltbook/responseComposer.js +36 -7
  40. package/dist/moltbook/responseComposer.js.map +1 -1
  41. package/dist/moltbook/strategicContext.d.ts +89 -0
  42. package/dist/moltbook/strategicContext.d.ts.map +1 -0
  43. package/dist/moltbook/strategicContext.js +283 -0
  44. package/dist/moltbook/strategicContext.js.map +1 -0
  45. package/dist/primitives/index.d.ts +6 -2
  46. package/dist/primitives/index.d.ts.map +1 -1
  47. package/dist/primitives/index.js +6 -2
  48. package/dist/primitives/index.js.map +1 -1
  49. package/dist/rail/persistence.d.ts +70 -1
  50. package/dist/rail/persistence.d.ts.map +1 -1
  51. package/dist/rail/persistence.js +270 -3
  52. package/dist/rail/persistence.js.map +1 -1
  53. package/dist/rail/plugin.d.ts +76 -0
  54. package/dist/rail/plugin.d.ts.map +1 -0
  55. package/dist/rail/plugin.js +141 -0
  56. package/dist/rail/plugin.js.map +1 -0
  57. package/dist/rail/server.d.ts +121 -30
  58. package/dist/rail/server.d.ts.map +1 -1
  59. package/dist/rail/server.js +404 -28
  60. package/dist/rail/server.js.map +1 -1
  61. package/dist/rail/wsServer.d.ts +7 -0
  62. package/dist/rail/wsServer.d.ts.map +1 -1
  63. package/dist/rail/wsServer.js +233 -11
  64. package/dist/rail/wsServer.js.map +1 -1
  65. package/dist/resonance/globalKuramoto.d.ts +20 -0
  66. package/dist/resonance/globalKuramoto.d.ts.map +1 -1
  67. package/dist/resonance/globalKuramoto.js +93 -2
  68. package/dist/resonance/globalKuramoto.js.map +1 -1
  69. package/dist/routing/index.d.ts +2 -0
  70. package/dist/routing/index.d.ts.map +1 -1
  71. package/dist/routing/index.js +1 -0
  72. package/dist/routing/index.js.map +1 -1
  73. package/dist/routing/modelRegistry.d.ts +54 -0
  74. package/dist/routing/modelRegistry.d.ts.map +1 -0
  75. package/dist/routing/modelRegistry.js +150 -0
  76. package/dist/routing/modelRegistry.js.map +1 -0
  77. package/dist/routing/thermodynamic.d.ts +12 -3
  78. package/dist/routing/thermodynamic.d.ts.map +1 -1
  79. package/dist/routing/thermodynamic.js +19 -9
  80. package/dist/routing/thermodynamic.js.map +1 -1
  81. package/dist/runtime/agent-zero.d.ts +38 -2
  82. package/dist/runtime/agent-zero.d.ts.map +1 -1
  83. package/dist/runtime/agent-zero.js +104 -7
  84. package/dist/runtime/agent-zero.js.map +1 -1
  85. package/dist/runtime/contextWindow.d.ts +62 -0
  86. package/dist/runtime/contextWindow.d.ts.map +1 -0
  87. package/dist/runtime/contextWindow.js +125 -0
  88. package/dist/runtime/contextWindow.js.map +1 -0
  89. package/dist/runtime/identity.d.ts +65 -0
  90. package/dist/runtime/identity.d.ts.map +1 -0
  91. package/dist/runtime/identity.js +199 -0
  92. package/dist/runtime/identity.js.map +1 -0
  93. package/dist/runtime/index.d.ts +6 -0
  94. package/dist/runtime/index.d.ts.map +1 -1
  95. package/dist/runtime/index.js +6 -0
  96. package/dist/runtime/index.js.map +1 -1
  97. package/dist/runtime/sessionStore.d.ts +70 -0
  98. package/dist/runtime/sessionStore.d.ts.map +1 -0
  99. package/dist/runtime/sessionStore.js +134 -0
  100. package/dist/runtime/sessionStore.js.map +1 -0
  101. package/dist/security/capabilities.d.ts +46 -0
  102. package/dist/security/capabilities.d.ts.map +1 -1
  103. package/dist/security/capabilities.js +176 -0
  104. package/dist/security/capabilities.js.map +1 -1
  105. package/dist/security/combinators.d.ts +89 -0
  106. package/dist/security/combinators.d.ts.map +1 -0
  107. package/dist/security/combinators.js +168 -0
  108. package/dist/security/combinators.js.map +1 -0
  109. package/dist/security/index.d.ts +7 -1
  110. package/dist/security/index.d.ts.map +1 -1
  111. package/dist/security/index.js +4 -1
  112. package/dist/security/index.js.map +1 -1
  113. package/dist/security/isolation.d.ts +76 -0
  114. package/dist/security/isolation.d.ts.map +1 -0
  115. package/dist/security/isolation.js +118 -0
  116. package/dist/security/isolation.js.map +1 -0
  117. package/dist/security/sandbox.d.ts +38 -1
  118. package/dist/security/sandbox.d.ts.map +1 -1
  119. package/dist/security/sandbox.js +68 -8
  120. package/dist/security/sandbox.js.map +1 -1
  121. package/package.json +12 -3
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Gemini Adapter
3
+ *
4
+ * Translates between AXON messages and Gemini API formats.
5
+ * Supports both standard Interactions API and Live (bidirectional WebSocket) API.
6
+ * Structural adapter only -- actual API calls are handled externally
7
+ * via OpenRouter or direct Gemini API.
8
+ */
9
+ import { randomUUID as uuid } from 'crypto';
10
+ // ---------------------------------------------------------------------------
11
+ // Kind mapping
12
+ // ---------------------------------------------------------------------------
13
+ const AXON_TO_GEMINI_STATUS = {
14
+ think: 'in_progress',
15
+ act: 'completed',
16
+ crystallize: 'completed',
17
+ halt: 'failed',
18
+ invoke: 'requires_action',
19
+ spawn: 'in_progress',
20
+ percept: 'in_progress',
21
+ resonate: 'in_progress',
22
+ attune: 'in_progress',
23
+ broadcast: 'completed',
24
+ gradient: 'in_progress',
25
+ };
26
+ const GEMINI_STATUS_TO_AXON = {
27
+ completed: 'act',
28
+ in_progress: 'think',
29
+ requires_action: 'invoke',
30
+ failed: 'halt',
31
+ };
32
+ export function axonKindToGeminiStatus(kind) {
33
+ return AXON_TO_GEMINI_STATUS[kind] ?? 'in_progress';
34
+ }
35
+ export function geminiStatusToAxonKind(status) {
36
+ return GEMINI_STATUS_TO_AXON[status] ?? 'think';
37
+ }
38
+ // ---------------------------------------------------------------------------
39
+ // Standalone translation functions
40
+ // ---------------------------------------------------------------------------
41
+ /**
42
+ * Translate an AXON message to a Gemini Interaction.
43
+ */
44
+ export function axonToGeminiInteraction(message) {
45
+ const payload = message.payload;
46
+ let text = '';
47
+ if (typeof payload === 'string') {
48
+ text = payload;
49
+ }
50
+ else if (payload && typeof payload === 'object' && 'content' in payload) {
51
+ text = String(payload.content);
52
+ }
53
+ else if (payload !== null && payload !== undefined) {
54
+ text = JSON.stringify(payload);
55
+ }
56
+ const interaction = {
57
+ id: message.id,
58
+ input: { text },
59
+ status: axonKindToGeminiStatus(message.kind),
60
+ };
61
+ // If the AXON message is an invoke (tool call), attach tool declarations from payload
62
+ if (message.kind === 'invoke' && payload && typeof payload === 'object') {
63
+ const p = payload;
64
+ if (p.tool && typeof p.tool === 'string') {
65
+ interaction.tools = [
66
+ {
67
+ functionDeclarations: [
68
+ {
69
+ name: p.tool,
70
+ description: p.description ?? '',
71
+ parameters: p.parameters ?? {},
72
+ },
73
+ ],
74
+ },
75
+ ];
76
+ }
77
+ }
78
+ return interaction;
79
+ }
80
+ /**
81
+ * Translate a Gemini Interaction response back to an AXON message.
82
+ */
83
+ export function geminiInteractionToAxon(interaction, fromAgentId) {
84
+ const status = interaction.status ?? 'completed';
85
+ const kind = geminiStatusToAxonKind(status);
86
+ let payloadText = '';
87
+ if ('text' in interaction.input) {
88
+ payloadText = interaction.input.text;
89
+ }
90
+ else if ('parts' in interaction.input) {
91
+ payloadText = interaction.input.parts.map(p => p.text).join('\n');
92
+ }
93
+ return {
94
+ id: interaction.id ?? uuid(),
95
+ kind,
96
+ from: fromAgentId,
97
+ to: undefined,
98
+ payload: payloadText,
99
+ timestamp: Date.now(),
100
+ embedding: undefined,
101
+ };
102
+ }
103
+ /**
104
+ * Translate an AXON message to a Gemini Live (bidirectional) message.
105
+ */
106
+ export function axonToGeminiBidi(message) {
107
+ const payload = message.payload;
108
+ let text = '';
109
+ if (typeof payload === 'string') {
110
+ text = payload;
111
+ }
112
+ else if (payload !== null && payload !== undefined) {
113
+ text = JSON.stringify(payload);
114
+ }
115
+ // Map AXON kind to bidi message type
116
+ if (message.kind === 'invoke') {
117
+ return {
118
+ type: 'toolResponse',
119
+ payload: {
120
+ id: message.id,
121
+ output: text,
122
+ },
123
+ };
124
+ }
125
+ return {
126
+ type: 'clientContent',
127
+ payload: {
128
+ turns: [{ role: 'user', parts: [{ text }] }],
129
+ turnComplete: true,
130
+ },
131
+ };
132
+ }
133
+ /**
134
+ * Translate a Gemini Live bidirectional message to an AXON message.
135
+ * Returns null for messages that don't map to AXON (setup, setupComplete).
136
+ */
137
+ export function geminiBidiToAxon(bidi, fromAgentId) {
138
+ switch (bidi.type) {
139
+ case 'serverContent': {
140
+ const p = bidi.payload;
141
+ let text = '';
142
+ if (p && Array.isArray(p.parts)) {
143
+ text = p.parts
144
+ .map(part => part.text ?? '')
145
+ .join('');
146
+ }
147
+ else if (p && typeof p.text === 'string') {
148
+ text = p.text;
149
+ }
150
+ return {
151
+ id: uuid(),
152
+ kind: 'act',
153
+ from: fromAgentId,
154
+ to: undefined,
155
+ payload: text,
156
+ timestamp: Date.now(),
157
+ embedding: undefined,
158
+ };
159
+ }
160
+ case 'toolCall': {
161
+ const p = bidi.payload;
162
+ return {
163
+ id: uuid(),
164
+ kind: 'invoke',
165
+ from: fromAgentId,
166
+ to: undefined,
167
+ payload: p ?? {},
168
+ timestamp: Date.now(),
169
+ embedding: undefined,
170
+ };
171
+ }
172
+ case 'goAway': {
173
+ return {
174
+ id: uuid(),
175
+ kind: 'halt',
176
+ from: fromAgentId,
177
+ to: undefined,
178
+ payload: bidi.payload ?? 'goAway',
179
+ timestamp: Date.now(),
180
+ embedding: undefined,
181
+ };
182
+ }
183
+ case 'setup':
184
+ case 'setupComplete':
185
+ case 'clientContent':
186
+ case 'realtimeInput':
187
+ case 'toolResponse':
188
+ // These are client-side or lifecycle messages -- no AXON equivalent
189
+ return null;
190
+ default:
191
+ return null;
192
+ }
193
+ }
194
+ // ---------------------------------------------------------------------------
195
+ // GeminiAdapter class
196
+ // ---------------------------------------------------------------------------
197
+ export class GeminiAdapter {
198
+ config;
199
+ interactionChain = [];
200
+ constructor(config) {
201
+ this.config = config;
202
+ }
203
+ /**
204
+ * Translate outgoing AXON message to Gemini format.
205
+ * Uses Interaction format for standard mode, bidi for direct/live mode.
206
+ */
207
+ toGemini(message) {
208
+ if (this.config.mode === 'direct') {
209
+ return axonToGeminiBidi(message);
210
+ }
211
+ const interaction = axonToGeminiInteraction(message);
212
+ // Chain to previous interaction if we have history
213
+ if (this.interactionChain.length > 0) {
214
+ interaction.previousInteractionId =
215
+ this.interactionChain[this.interactionChain.length - 1];
216
+ }
217
+ // Track this interaction in the chain
218
+ if (interaction.id) {
219
+ this.interactionChain.push(interaction.id);
220
+ }
221
+ return interaction;
222
+ }
223
+ /**
224
+ * Translate incoming Gemini response to AXON message.
225
+ */
226
+ fromGemini(response) {
227
+ if ('type' in response) {
228
+ // Bidirectional message
229
+ return geminiBidiToAxon(response, this.config.model);
230
+ }
231
+ // Interaction response
232
+ const interaction = response;
233
+ // Track interaction chain
234
+ if (interaction.id && !this.interactionChain.includes(interaction.id)) {
235
+ this.interactionChain.push(interaction.id);
236
+ }
237
+ return geminiInteractionToAxon(interaction, this.config.model);
238
+ }
239
+ getChain() {
240
+ return [...this.interactionChain];
241
+ }
242
+ resetChain() {
243
+ this.interactionChain = [];
244
+ }
245
+ }
246
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/channels/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * A2A (Agent-to-Agent) Protocol Bridge
3
+ *
4
+ * Translates between Google's A2A protocol and Agent Zero's AXON message protocol.
5
+ * Enables interop with any A2A-compliant agent without modifying core rail infrastructure.
6
+ *
7
+ * A2A Spec: https://github.com/google/A2A
8
+ * AXON: Agent Zero eXtended Object Notation (see primitives/types.ts)
9
+ */
10
+ import type { Message, MessageKind } from '../primitives/types.js';
11
+ /** A2A Agent Card — describes an agent's capabilities and endpoint */
12
+ export interface A2AAgentCard {
13
+ name: string;
14
+ description: string;
15
+ url: string;
16
+ version: string;
17
+ capabilities: {
18
+ streaming: boolean;
19
+ pushNotifications: boolean;
20
+ stateTransitionHistory: boolean;
21
+ };
22
+ skills: Array<{
23
+ id: string;
24
+ name: string;
25
+ description: string;
26
+ inputSchema?: Record<string, unknown>;
27
+ outputSchema?: Record<string, unknown>;
28
+ }>;
29
+ securitySchemes?: Record<string, {
30
+ type: 'apiKey' | 'http' | 'oauth2';
31
+ in?: 'header' | 'query';
32
+ name?: string;
33
+ }>;
34
+ }
35
+ /** A2A Task — unit of work in the A2A protocol */
36
+ export interface A2ATask {
37
+ id: string;
38
+ status: A2ATaskStatus;
39
+ artifacts?: Array<{
40
+ name?: string;
41
+ parts: Array<{
42
+ type: 'text';
43
+ text: string;
44
+ } | {
45
+ type: 'data';
46
+ data: string;
47
+ mimeType: string;
48
+ }>;
49
+ }>;
50
+ history?: Array<{
51
+ role: 'user' | 'agent';
52
+ parts: Array<{
53
+ type: 'text';
54
+ text: string;
55
+ }>;
56
+ }>;
57
+ metadata?: Record<string, unknown>;
58
+ }
59
+ export type A2ATaskStatus = 'working' | 'completed' | 'failed' | 'canceled' | 'rejected' | 'input_required' | 'auth_required';
60
+ /**
61
+ * Map an A2A task status to the corresponding AXON MessageKind.
62
+ */
63
+ export declare function a2aStatusToAxonKind(status: A2ATaskStatus): MessageKind;
64
+ /**
65
+ * Map an AXON MessageKind to the corresponding A2A task status.
66
+ */
67
+ export declare function axonKindToA2AStatus(kind: MessageKind): A2ATaskStatus;
68
+ /**
69
+ * Convert an A2A Agent Card to a rail enrollment record.
70
+ */
71
+ export declare function agentCardToEnrollment(card: A2AAgentCard): {
72
+ agentId: string;
73
+ agentName: string;
74
+ capabilities: string[];
75
+ platform: string;
76
+ };
77
+ /**
78
+ * Convert a rail enrollment record to an A2A Agent Card.
79
+ */
80
+ export declare function enrollmentToAgentCard(enrollment: {
81
+ agentId: string;
82
+ agentName: string;
83
+ capabilities: string[];
84
+ }): A2AAgentCard;
85
+ /**
86
+ * Convert an A2A Task to an AXON Message.
87
+ */
88
+ export declare function a2aTaskToAxon(task: A2ATask, fromAgentId: string): Message;
89
+ /**
90
+ * Convert an AXON Message to an A2A Task.
91
+ */
92
+ export declare function axonToA2ATask(message: Message, taskId?: string): A2ATask;
93
+ export declare class A2ABridge {
94
+ private tasks;
95
+ private agentCards;
96
+ /**
97
+ * Register an external A2A agent by its Agent Card.
98
+ * Returns the generated enrollment record for the rail.
99
+ */
100
+ registerAgent(card: A2AAgentCard): {
101
+ agentId: string;
102
+ agentName: string;
103
+ };
104
+ /**
105
+ * Translate an incoming A2A JSON-RPC method + params to an AXON Message.
106
+ * Supports: tasks/send, tasks/sendSubscribe, tasks/get, tasks/cancel.
107
+ */
108
+ fromA2A(method: string, params: unknown): Message | null;
109
+ /**
110
+ * Translate an outgoing AXON Message to A2A JSON-RPC format.
111
+ */
112
+ toA2A(message: Message): {
113
+ method: string;
114
+ params: unknown;
115
+ } | null;
116
+ /**
117
+ * Evict oldest tasks when the map exceeds MAX_TASKS.
118
+ */
119
+ private evictIfNeeded;
120
+ /**
121
+ * Get a task by ID.
122
+ */
123
+ getTask(taskId: string): A2ATask | undefined;
124
+ /**
125
+ * Update a task's status.
126
+ */
127
+ updateTaskStatus(taskId: string, status: A2ATaskStatus): void;
128
+ /**
129
+ * Get all registered A2A Agent Cards.
130
+ */
131
+ getAgentCards(): A2AAgentCard[];
132
+ }
133
+ //# sourceMappingURL=a2a.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../src/interop/a2a.ts"],"names":[],"mappings":"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"}