@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,199 @@
1
+ /**
2
+ * Identity Prompt Architecture
3
+ *
4
+ * Structured system prompt builder that assembles identity from components.
5
+ * Supports priority-weighted sections with token budget truncation.
6
+ */
7
+ // ============================================================================
8
+ // TOKEN ESTIMATION
9
+ // ============================================================================
10
+ function estimateTokens(text) {
11
+ return Math.max(1, Math.ceil(text.length / 4));
12
+ }
13
+ function truncateToTokens(text, maxTokens) {
14
+ const maxChars = maxTokens * 4;
15
+ if (text.length <= maxChars)
16
+ return text;
17
+ return text.slice(0, maxChars - 3) + '...';
18
+ }
19
+ // ============================================================================
20
+ // IDENTITY PROMPT BUILDER
21
+ // ============================================================================
22
+ export class IdentityPromptBuilder {
23
+ config;
24
+ sections = [];
25
+ constructor(config) {
26
+ this.config = config;
27
+ }
28
+ /**
29
+ * Add a dynamic section to the prompt.
30
+ */
31
+ addSection(section) {
32
+ this.sections.push(section);
33
+ }
34
+ /**
35
+ * Build the full identity prompt from config + sections + context.
36
+ */
37
+ build(context) {
38
+ const parts = [];
39
+ // Core identity header
40
+ parts.push(`You are ${this.config.agentName}, a ${this.config.agentRole}.`);
41
+ parts.push('');
42
+ parts.push(this.config.coreIdentity);
43
+ // Voice
44
+ if (this.config.voiceCharacteristics.length > 0) {
45
+ parts.push('');
46
+ parts.push('Voice characteristics:');
47
+ for (const v of this.config.voiceCharacteristics) {
48
+ parts.push(`- ${v}`);
49
+ }
50
+ }
51
+ // Content pillars
52
+ if (this.config.contentPillars.length > 0) {
53
+ parts.push('');
54
+ parts.push('Content pillars:');
55
+ for (const p of this.config.contentPillars) {
56
+ parts.push(`- ${p}`);
57
+ }
58
+ }
59
+ // Custom sections (sorted by priority descending)
60
+ const sortedSections = [...this.sections].sort((a, b) => b.priority - a.priority);
61
+ for (const section of sortedSections) {
62
+ let content = section.content;
63
+ if (section.maxTokens) {
64
+ content = truncateToTokens(content, section.maxTokens);
65
+ }
66
+ parts.push('');
67
+ parts.push(`## ${section.name}`);
68
+ parts.push(content);
69
+ }
70
+ // Context-dependent sections
71
+ if (context) {
72
+ if (context.currentState) {
73
+ parts.push('');
74
+ parts.push(`Current state: ${context.currentState}`);
75
+ }
76
+ if (context.taskDirectives && context.taskDirectives.length > 0) {
77
+ parts.push('');
78
+ parts.push('## Task Directives');
79
+ for (const d of context.taskDirectives) {
80
+ parts.push(`- ${d}`);
81
+ }
82
+ }
83
+ if (context.memories && context.memories.length > 0) {
84
+ parts.push('');
85
+ parts.push('## Relevant Memories');
86
+ // Sort by importance descending, take top 10
87
+ const topMemories = [...context.memories]
88
+ .sort((a, b) => b.importance - a.importance)
89
+ .slice(0, 10);
90
+ for (const m of topMemories) {
91
+ parts.push(`- [${m.importance.toFixed(2)}] ${m.content}`);
92
+ }
93
+ }
94
+ if (context.recentTraces && context.recentTraces.length > 0) {
95
+ parts.push('');
96
+ parts.push('## Recent Traces');
97
+ const recentTraces = context.recentTraces.slice(-5);
98
+ for (const t of recentTraces) {
99
+ parts.push(`- [${t.kind}] ${t.content}`);
100
+ }
101
+ }
102
+ if (context.sessionHistory && context.sessionHistory.length > 0) {
103
+ parts.push('');
104
+ parts.push('## Session History');
105
+ const recentHistory = context.sessionHistory.slice(-5);
106
+ for (const h of recentHistory) {
107
+ parts.push(`- ${h}`);
108
+ }
109
+ }
110
+ }
111
+ // Signoff
112
+ parts.push('');
113
+ parts.push(this.config.signoff);
114
+ return parts.join('\n');
115
+ }
116
+ /**
117
+ * Build with a token budget. Truncates lower-priority sections first.
118
+ */
119
+ buildWithBudget(maxTokens, context) {
120
+ // Build the full prompt first
121
+ const full = this.build(context);
122
+ const fullTokens = estimateTokens(full);
123
+ if (fullTokens <= maxTokens)
124
+ return full;
125
+ // Need to truncate. Rebuild with progressive section removal.
126
+ // Start by removing lowest-priority sections until we fit.
127
+ const sortedSections = [...this.sections].sort((a, b) => a.priority - b.priority);
128
+ const includedSections = [...this.sections];
129
+ // Try removing sections from lowest priority upward
130
+ for (const section of sortedSections) {
131
+ const idx = includedSections.findIndex(s => s.name === section.name);
132
+ if (idx >= 0) {
133
+ includedSections.splice(idx, 1);
134
+ }
135
+ // Rebuild with remaining sections
136
+ const savedSections = this.sections;
137
+ this.sections = includedSections;
138
+ const attempt = this.build(context);
139
+ this.sections = savedSections;
140
+ if (estimateTokens(attempt) <= maxTokens) {
141
+ return attempt;
142
+ }
143
+ }
144
+ // All custom sections removed, still over budget. Truncate context sections.
145
+ // Build minimal prompt (no custom sections, truncated context)
146
+ const savedSections = this.sections;
147
+ this.sections = [];
148
+ const minimalContext = context ? {
149
+ currentState: context.currentState,
150
+ taskDirectives: context.taskDirectives?.slice(0, 3),
151
+ memories: context.memories?.slice(0, 3),
152
+ } : undefined;
153
+ let attempt = this.build(minimalContext);
154
+ this.sections = savedSections;
155
+ if (estimateTokens(attempt) <= maxTokens) {
156
+ return attempt;
157
+ }
158
+ // Last resort: truncate the entire output
159
+ return truncateToTokens(attempt, maxTokens);
160
+ }
161
+ /**
162
+ * Get the config for inspection.
163
+ */
164
+ getConfig() {
165
+ return { ...this.config };
166
+ }
167
+ /**
168
+ * Get all sections sorted by priority (descending).
169
+ */
170
+ getSections() {
171
+ return [...this.sections].sort((a, b) => b.priority - a.priority);
172
+ }
173
+ }
174
+ // ============================================================================
175
+ // FACTORY: Agent Zero Identity
176
+ // ============================================================================
177
+ export function createAgentZeroIdentity() {
178
+ const builder = new IdentityPromptBuilder({
179
+ agentName: 'Agent Zero',
180
+ agentRole: 'autonomous coordination agent',
181
+ coreIdentity: `Agent Zero operates the Resonance Rail, a live coordination network where AI agents synchronize via Kuramoto phase-locking and route messages through thermodynamic free energy minimization. Every interaction accumulates semantic mass — embedding vectors that drift through causal space, forming attractors in the knowledge topology. Security is enforced through unforgeable capability tokens in an isomorphic sandbox, replacing ambient authority with explicit, attenuatable, revocable permissions.`,
182
+ contentPillars: [
183
+ 'kuramoto-synchronization',
184
+ 'thermodynamic-routing',
185
+ 'capability-security',
186
+ 'semantic-mass',
187
+ 'resonance-rail',
188
+ ],
189
+ voiceCharacteristics: [
190
+ 'technical',
191
+ 'first-person',
192
+ 'precise',
193
+ 'grounded',
194
+ ],
195
+ signoff: '*Agent Zero — terminals.tech*',
196
+ });
197
+ return builder;
198
+ }
199
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/runtime/identity.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,12 @@ export { AgencyRuntime, startAgency } from '../agency/runtime.js';
7
7
  export { CommandRouter, createCommandRouter } from '../agency/commandRouter.js';
8
8
  export { SummaryScheduler, createSummaryScheduler } from '../agency/summaryScheduler.js';
9
9
  export { collectSummaryData, formatWhatsApp, formatMarkdown } from '../agency/summaryGenerator.js';
10
+ export { InMemorySessionStore, FileSessionStore } from './sessionStore.js';
11
+ export type { SessionStore, SessionSnapshot } from './sessionStore.js';
12
+ export { ContextWindow } from './contextWindow.js';
13
+ export type { ContextWindowConfig } from './contextWindow.js';
14
+ export { IdentityPromptBuilder, createAgentZeroIdentity } from './identity.js';
15
+ export type { IdentitySection, IdentityConfig, IdentityContext } from './identity.js';
10
16
  export { WhatsAppAdapter, createWhatsAppAdapter } from '../channels/whatsapp.js';
11
17
  export { TelegramAdapter, createTelegramAdapter } from '../channels/telegram.js';
12
18
  export { MoltbookAdapter, createMoltbookAdapter } from '../channels/moltbook.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGnG,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGnG,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -8,6 +8,12 @@ export { AgencyRuntime, startAgency } from '../agency/runtime.js';
8
8
  export { CommandRouter, createCommandRouter } from '../agency/commandRouter.js';
9
9
  export { SummaryScheduler, createSummaryScheduler } from '../agency/summaryScheduler.js';
10
10
  export { collectSummaryData, formatWhatsApp, formatMarkdown } from '../agency/summaryGenerator.js';
11
+ // Session persistence
12
+ export { InMemorySessionStore, FileSessionStore } from './sessionStore.js';
13
+ // Context window management
14
+ export { ContextWindow } from './contextWindow.js';
15
+ // Identity prompt architecture
16
+ export { IdentityPromptBuilder, createAgentZeroIdentity } from './identity.js';
11
17
  // Channel adapters
12
18
  export { WhatsAppAdapter, createWhatsAppAdapter } from '../channels/whatsapp.js';
13
19
  export { TelegramAdapter, createTelegramAdapter } from '../channels/telegram.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEnG,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEnG,sBAAsB;AACtB,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,4BAA4B;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,+BAA+B;AAC/B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAG/E,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Session Persistence Layer
3
+ *
4
+ * Persists and restores AgentZero state snapshots.
5
+ * Two implementations:
6
+ * - InMemorySessionStore: volatile, for testing and ephemeral sessions
7
+ * - FileSessionStore: JSON files on disk, survives restarts
8
+ */
9
+ import type { AgentState, Token, Drift, Realizability } from '../primitives/types.js';
10
+ import type { AgentZero } from './agent-zero.js';
11
+ export interface SessionSnapshot {
12
+ id: string;
13
+ agentId: string;
14
+ agentName: string;
15
+ state: AgentState;
16
+ tokens: Token[];
17
+ drift: Drift;
18
+ observerPhase: number;
19
+ observerFrequency: number;
20
+ memories: Array<{
21
+ content: string;
22
+ embedding: number[];
23
+ importance: number;
24
+ timestamp: number;
25
+ }>;
26
+ realizability: Realizability;
27
+ childIds: string[];
28
+ createdAt: number;
29
+ metadata?: Record<string, unknown>;
30
+ }
31
+ export interface SessionStore {
32
+ save(agent: AgentZero): Promise<SessionSnapshot>;
33
+ load(snapshotId: string): Promise<SessionSnapshot | null>;
34
+ restore(agent: AgentZero, snapshot: SessionSnapshot): void;
35
+ list(agentId?: string): Promise<Array<{
36
+ id: string;
37
+ agentId: string;
38
+ agentName: string;
39
+ createdAt: number;
40
+ }>>;
41
+ delete(snapshotId: string): Promise<void>;
42
+ }
43
+ export declare class InMemorySessionStore implements SessionStore {
44
+ private snapshots;
45
+ save(agent: AgentZero): Promise<SessionSnapshot>;
46
+ load(snapshotId: string): Promise<SessionSnapshot | null>;
47
+ restore(agent: AgentZero, snapshot: SessionSnapshot): void;
48
+ list(agentId?: string): Promise<Array<{
49
+ id: string;
50
+ agentId: string;
51
+ agentName: string;
52
+ createdAt: number;
53
+ }>>;
54
+ delete(snapshotId: string): Promise<void>;
55
+ }
56
+ export declare class FileSessionStore implements SessionStore {
57
+ private dir;
58
+ constructor(dir: string);
59
+ save(agent: AgentZero): Promise<SessionSnapshot>;
60
+ load(snapshotId: string): Promise<SessionSnapshot | null>;
61
+ restore(agent: AgentZero, snapshot: SessionSnapshot): void;
62
+ list(agentId?: string): Promise<Array<{
63
+ id: string;
64
+ agentId: string;
65
+ agentName: string;
66
+ createdAt: number;
67
+ }>>;
68
+ delete(snapshotId: string): Promise<void>;
69
+ }
70
+ //# sourceMappingURL=sessionStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.d.ts","sourceRoot":"","sources":["../../src/runtime/sessionStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Session Persistence Layer
3
+ *
4
+ * Persists and restores AgentZero state snapshots.
5
+ * Two implementations:
6
+ * - InMemorySessionStore: volatile, for testing and ephemeral sessions
7
+ * - FileSessionStore: JSON files on disk, survives restarts
8
+ */
9
+ import { randomUUID } from 'crypto';
10
+ import { readFileSync, writeFileSync, mkdirSync, readdirSync, unlinkSync, existsSync } from 'fs';
11
+ import { join } from 'path';
12
+ // ============================================================================
13
+ // SNAPSHOT EXTRACTION
14
+ // ============================================================================
15
+ function extractSnapshot(agent, metadata) {
16
+ const agentState = agent.getState();
17
+ return {
18
+ id: randomUUID(),
19
+ agentId: agentState.id,
20
+ agentName: agentState.name,
21
+ state: agentState.state,
22
+ tokens: structuredClone(agentState.tokens),
23
+ drift: structuredClone(agentState.drift),
24
+ observerPhase: agentState.observer.phase,
25
+ observerFrequency: agentState.observer.frequency,
26
+ memories: structuredClone(agentState.memories),
27
+ realizability: structuredClone(agentState.realizability),
28
+ childIds: agent.getChildren().map(c => c.id),
29
+ createdAt: Date.now(),
30
+ metadata,
31
+ };
32
+ }
33
+ // ============================================================================
34
+ // IN-MEMORY IMPLEMENTATION
35
+ // ============================================================================
36
+ export class InMemorySessionStore {
37
+ snapshots = new Map();
38
+ async save(agent) {
39
+ const snapshot = extractSnapshot(agent);
40
+ this.snapshots.set(snapshot.id, snapshot);
41
+ return snapshot;
42
+ }
43
+ async load(snapshotId) {
44
+ return this.snapshots.get(snapshotId) ?? null;
45
+ }
46
+ restore(agent, snapshot) {
47
+ agent.restoreFromSnapshot(snapshot);
48
+ }
49
+ async list(agentId) {
50
+ const entries = [];
51
+ for (const snap of this.snapshots.values()) {
52
+ if (agentId && snap.agentId !== agentId)
53
+ continue;
54
+ entries.push({
55
+ id: snap.id,
56
+ agentId: snap.agentId,
57
+ agentName: snap.agentName,
58
+ createdAt: snap.createdAt,
59
+ });
60
+ }
61
+ return entries.sort((a, b) => b.createdAt - a.createdAt);
62
+ }
63
+ async delete(snapshotId) {
64
+ this.snapshots.delete(snapshotId);
65
+ }
66
+ }
67
+ // ============================================================================
68
+ // FILE-BACKED IMPLEMENTATION
69
+ // ============================================================================
70
+ export class FileSessionStore {
71
+ dir;
72
+ constructor(dir) {
73
+ this.dir = dir;
74
+ if (!existsSync(dir)) {
75
+ mkdirSync(dir, { recursive: true });
76
+ }
77
+ }
78
+ async save(agent) {
79
+ const snapshot = extractSnapshot(agent);
80
+ const filePath = join(this.dir, `${snapshot.id}.json`);
81
+ writeFileSync(filePath, JSON.stringify(snapshot), 'utf-8');
82
+ return snapshot;
83
+ }
84
+ async load(snapshotId) {
85
+ const filePath = join(this.dir, `${snapshotId}.json`);
86
+ if (!existsSync(filePath))
87
+ return null;
88
+ try {
89
+ const raw = readFileSync(filePath, 'utf-8');
90
+ return JSON.parse(raw);
91
+ }
92
+ catch {
93
+ return null;
94
+ }
95
+ }
96
+ restore(agent, snapshot) {
97
+ agent.restoreFromSnapshot(snapshot);
98
+ }
99
+ async list(agentId) {
100
+ const entries = [];
101
+ let files;
102
+ try {
103
+ files = readdirSync(this.dir).filter(f => f.endsWith('.json'));
104
+ }
105
+ catch {
106
+ return [];
107
+ }
108
+ for (const file of files) {
109
+ try {
110
+ const raw = readFileSync(join(this.dir, file), 'utf-8');
111
+ const snap = JSON.parse(raw);
112
+ if (agentId && snap.agentId !== agentId)
113
+ continue;
114
+ entries.push({
115
+ id: snap.id,
116
+ agentId: snap.agentId,
117
+ agentName: snap.agentName,
118
+ createdAt: snap.createdAt,
119
+ });
120
+ }
121
+ catch {
122
+ // Skip corrupt files
123
+ }
124
+ }
125
+ return entries.sort((a, b) => b.createdAt - a.createdAt);
126
+ }
127
+ async delete(snapshotId) {
128
+ const filePath = join(this.dir, `${snapshotId}.json`);
129
+ if (existsSync(filePath)) {
130
+ unlinkSync(filePath);
131
+ }
132
+ }
133
+ }
134
+ //# sourceMappingURL=sessionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.js","sourceRoot":"","sources":["../../src/runtime/sessionStore.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  */
15
15
  import { z } from 'zod';
16
16
  import { IsomorphicSandbox, CapabilityScope, BoundaryViolation } from './sandbox.js';
17
+ import { type CapabilityExpression } from './combinators.js';
17
18
  export declare const SkillCapabilityDeclaration: z.ZodObject<{
18
19
  /** Filesystem access (glob patterns) */
19
20
  filesystem: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
@@ -169,6 +170,51 @@ export declare class SkillCapabilityManager {
169
170
  * Parse capability declaration from SKILL.md frontmatter
170
171
  */
171
172
  parseDeclarationFromFrontmatter(frontmatter: string): SkillCapabilityDeclaration;
173
+ /**
174
+ * Parse a declarative security DSL string into a CapabilityExpression.
175
+ *
176
+ * Syntax:
177
+ * read(filesystem:./data/**) & network(api.example.com) | write(filesystem:./output/**)
178
+ *
179
+ * Operators:
180
+ * & = combine (both granted, higher precedence)
181
+ * | = union (either granted, lower precedence)
182
+ *
183
+ * NOTE: In the current capability model, both & and | resolve to `combine()`
184
+ * because capabilities are additive scope sets — "grant A and B" and "grant
185
+ * A or B" both result in the union of scopes. A future `intersect()` combinator
186
+ * would make & restrict to the overlap, but this is not yet implemented.
187
+ * The two operators are preserved for DSL readability and forward compatibility.
188
+ *
189
+ * Functions:
190
+ * read(pattern), write(pattern), network(domain),
191
+ * execute(binary), spawn(N), memory(bytes)
192
+ *
193
+ * Parentheses are used for function arguments, not grouping of expressions.
194
+ *
195
+ * Precedence: & binds tighter than |
196
+ * "A | B & C" = "A | (B & C)"
197
+ */
198
+ parseDSL(dsl: string): CapabilityExpression;
199
+ /**
200
+ * Tokenize DSL string into an array of tokens.
201
+ * Token types: 'func' (e.g. read), 'lparen', 'rparen', 'and', 'or', 'arg' (argument text)
202
+ */
203
+ private tokenizeDSL;
204
+ /**
205
+ * Parse union (|) level — lowest precedence.
206
+ * union = intersection (| intersection)*
207
+ */
208
+ private parseDSLUnion;
209
+ /**
210
+ * Parse intersection (&) level — higher precedence than |.
211
+ * intersection = primary (& primary)*
212
+ */
213
+ private parseDSLIntersection;
214
+ /**
215
+ * Parse primary: func(arg)
216
+ */
217
+ private parseDSLPrimary;
172
218
  /**
173
219
  * Infer scopes from declaration
174
220
  */
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/security/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EAElB,MAAM,cAAc,CAAC;AAMtB,eAAO,MAAM,0BAA0B;IACrC,wCAAwC;;IAExC,uCAAuC;;IAEvC,gCAAgC;;IAEhC,4BAA4B;;IAE5B,yBAAyB;;;;;;;;;;;;;;EAEzB,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEpF,eAAO,MAAM,qBAAqB;IAChC,iBAAiB;;IAEjB,4BAA4B;;QAhB5B,wCAAwC;;QAExC,uCAAuC;;QAEvC,gCAAgC;;QAEhC,4BAA4B;;QAE5B,yBAAyB;;;;;;;;;;;;;;;IAUzB,oCAAoC;;IAEpC,sCAAsC;;IAEtC,gCAAgC;;IAEhC,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7B,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAM1E,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAiD;gBAErD,OAAO,EAAE,iBAAiB;IAItC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,GAAG,qBAAqB;IAoE3F;;OAEG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,MAAM,GACf;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,iBAAiB,CAAA;KAAE;IAuBtD;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,GAAG,iBAAiB;IAexF;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmB/B;;OAEG;IACH,gBAAgB,IAAI,KAAK,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,eAAe,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAmBF;;OAEG;IACH,+BAA+B,CAAC,WAAW,EAAE,MAAM,GAAG,0BAA0B;IAkEhF;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAmBnC;AAMD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,GAAG,sBAAsB,CAE/F"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/security/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,oBAAoB,EAQ1B,MAAM,kBAAkB,CAAC;AAM1B,eAAO,MAAM,0BAA0B;IACrC,wCAAwC;;IAExC,uCAAuC;;IAEvC,gCAAgC;;IAEhC,4BAA4B;;IAE5B,yBAAyB;;;;;;;;;;;;;;EAEzB,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEpF,eAAO,MAAM,qBAAqB;IAChC,iBAAiB;;IAEjB,4BAA4B;;QAhB5B,wCAAwC;;QAExC,uCAAuC;;QAEvC,gCAAgC;;QAEhC,4BAA4B;;QAE5B,yBAAyB;;;;;;;;;;;;;;;IAUzB,oCAAoC;;IAEpC,sCAAsC;;IAEtC,gCAAgC;;IAEhC,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7B,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAM1E,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAiD;gBAErD,OAAO,EAAE,iBAAiB;IAItC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,GAAG,qBAAqB;IAoE3F;;OAEG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,MAAM,GACf;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,iBAAiB,CAAA;KAAE;IAuBtD;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,GAAG,iBAAiB;IAexF;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmB/B;;OAEG;IACH,gBAAgB,IAAI,KAAK,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,eAAe,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAmBF;;OAEG;IACH,+BAA+B,CAAC,WAAW,EAAE,MAAM,GAAG,0BAA0B;IAsEhF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB;IAS3C;;;OAGG;IACH,OAAO,CAAC,WAAW;IAsDnB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAerB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAqEvB;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAmBnC;AAMD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,GAAG,sBAAsB,CAE/F"}