@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.
- package/dist/agency/commandRouter.d.ts +10 -0
- package/dist/agency/commandRouter.d.ts.map +1 -1
- package/dist/agency/commandRouter.js +206 -0
- package/dist/agency/commandRouter.js.map +1 -1
- package/dist/agency/runtime.d.ts +24 -0
- package/dist/agency/runtime.d.ts.map +1 -1
- package/dist/agency/runtime.js +103 -0
- package/dist/agency/runtime.js.map +1 -1
- package/dist/channels/gemini.d.ts +73 -0
- package/dist/channels/gemini.d.ts.map +1 -0
- package/dist/channels/gemini.js +246 -0
- package/dist/channels/gemini.js.map +1 -0
- package/dist/interop/a2a.d.ts +133 -0
- package/dist/interop/a2a.d.ts.map +1 -0
- package/dist/interop/a2a.js +357 -0
- package/dist/interop/a2a.js.map +1 -0
- package/dist/interop/index.d.ts +10 -0
- package/dist/interop/index.d.ts.map +1 -0
- package/dist/interop/index.js +10 -0
- package/dist/interop/index.js.map +1 -0
- package/dist/interop/mcp.d.ts +111 -0
- package/dist/interop/mcp.d.ts.map +1 -0
- package/dist/interop/mcp.js +337 -0
- package/dist/interop/mcp.js.map +1 -0
- package/dist/moltbook/approvalGate.d.ts +23 -0
- package/dist/moltbook/approvalGate.d.ts.map +1 -1
- package/dist/moltbook/approvalGate.js +45 -0
- package/dist/moltbook/approvalGate.js.map +1 -1
- package/dist/moltbook/attentionField.d.ts +14 -0
- package/dist/moltbook/attentionField.d.ts.map +1 -1
- package/dist/moltbook/attentionField.js +37 -1
- package/dist/moltbook/attentionField.js.map +1 -1
- package/dist/moltbook/daemon.d.ts +24 -0
- package/dist/moltbook/daemon.d.ts.map +1 -1
- package/dist/moltbook/daemon.js +164 -0
- package/dist/moltbook/daemon.js.map +1 -1
- package/dist/moltbook/responseComposer.d.ts +7 -2
- package/dist/moltbook/responseComposer.d.ts.map +1 -1
- package/dist/moltbook/responseComposer.js +36 -7
- package/dist/moltbook/responseComposer.js.map +1 -1
- package/dist/moltbook/strategicContext.d.ts +89 -0
- package/dist/moltbook/strategicContext.d.ts.map +1 -0
- package/dist/moltbook/strategicContext.js +283 -0
- package/dist/moltbook/strategicContext.js.map +1 -0
- package/dist/primitives/index.d.ts +6 -2
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +6 -2
- package/dist/primitives/index.js.map +1 -1
- package/dist/rail/persistence.d.ts +70 -1
- package/dist/rail/persistence.d.ts.map +1 -1
- package/dist/rail/persistence.js +270 -3
- package/dist/rail/persistence.js.map +1 -1
- package/dist/rail/plugin.d.ts +76 -0
- package/dist/rail/plugin.d.ts.map +1 -0
- package/dist/rail/plugin.js +141 -0
- package/dist/rail/plugin.js.map +1 -0
- package/dist/rail/server.d.ts +121 -30
- package/dist/rail/server.d.ts.map +1 -1
- package/dist/rail/server.js +404 -28
- package/dist/rail/server.js.map +1 -1
- package/dist/rail/wsServer.d.ts +7 -0
- package/dist/rail/wsServer.d.ts.map +1 -1
- package/dist/rail/wsServer.js +233 -11
- package/dist/rail/wsServer.js.map +1 -1
- package/dist/resonance/globalKuramoto.d.ts +20 -0
- package/dist/resonance/globalKuramoto.d.ts.map +1 -1
- package/dist/resonance/globalKuramoto.js +93 -2
- package/dist/resonance/globalKuramoto.js.map +1 -1
- package/dist/routing/index.d.ts +2 -0
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +1 -0
- package/dist/routing/index.js.map +1 -1
- package/dist/routing/modelRegistry.d.ts +54 -0
- package/dist/routing/modelRegistry.d.ts.map +1 -0
- package/dist/routing/modelRegistry.js +150 -0
- package/dist/routing/modelRegistry.js.map +1 -0
- package/dist/routing/thermodynamic.d.ts +12 -3
- package/dist/routing/thermodynamic.d.ts.map +1 -1
- package/dist/routing/thermodynamic.js +19 -9
- package/dist/routing/thermodynamic.js.map +1 -1
- package/dist/runtime/agent-zero.d.ts +38 -2
- package/dist/runtime/agent-zero.d.ts.map +1 -1
- package/dist/runtime/agent-zero.js +104 -7
- package/dist/runtime/agent-zero.js.map +1 -1
- package/dist/runtime/contextWindow.d.ts +62 -0
- package/dist/runtime/contextWindow.d.ts.map +1 -0
- package/dist/runtime/contextWindow.js +125 -0
- package/dist/runtime/contextWindow.js.map +1 -0
- package/dist/runtime/identity.d.ts +65 -0
- package/dist/runtime/identity.d.ts.map +1 -0
- package/dist/runtime/identity.js +199 -0
- package/dist/runtime/identity.js.map +1 -0
- package/dist/runtime/index.d.ts +6 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +6 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/sessionStore.d.ts +70 -0
- package/dist/runtime/sessionStore.d.ts.map +1 -0
- package/dist/runtime/sessionStore.js +134 -0
- package/dist/runtime/sessionStore.js.map +1 -0
- package/dist/security/capabilities.d.ts +46 -0
- package/dist/security/capabilities.d.ts.map +1 -1
- package/dist/security/capabilities.js +176 -0
- package/dist/security/capabilities.js.map +1 -1
- package/dist/security/combinators.d.ts +89 -0
- package/dist/security/combinators.d.ts.map +1 -0
- package/dist/security/combinators.js +168 -0
- package/dist/security/combinators.js.map +1 -0
- package/dist/security/index.d.ts +7 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +4 -1
- package/dist/security/index.js.map +1 -1
- package/dist/security/isolation.d.ts +76 -0
- package/dist/security/isolation.d.ts.map +1 -0
- package/dist/security/isolation.js +118 -0
- package/dist/security/isolation.js.map +1 -0
- package/dist/security/sandbox.d.ts +38 -1
- package/dist/security/sandbox.d.ts.map +1 -1
- package/dist/security/sandbox.js +68 -8
- package/dist/security/sandbox.js.map +1 -1
- 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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"}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -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":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACjG,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAqC5B,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,SAAS,eAAe,CAAC,KAAgB,EAAE,QAAkC;IAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACpC,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,OAAO,EAAE,UAAU,CAAC,EAAE;QACtB,SAAS,EAAE,UAAU,CAAC,IAAI;QAC1B,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;QAC1C,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC;QACxC,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK;QACxC,iBAAiB,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS;QAChD,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC9C,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC;QACxD,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,MAAM,OAAO,oBAAoB;IACvB,SAAS,GAAiC,IAAI,GAAG,EAAE,CAAC;IAE5D,KAAK,CAAC,IAAI,CAAC,KAAgB;QACzB,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAkB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,KAAgB,EAAE,QAAyB;QACjD,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,MAAM,OAAO,GAAiF,EAAE,CAAC;QACjG,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;gBAAE,SAAS;YAClD,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB;QAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;CACF;AAED,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,MAAM,OAAO,gBAAgB;IACnB,GAAG,CAAS;IAEpB,YAAY,GAAW;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAgB;QACzB,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QACvD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAkB;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAgB,EAAE,QAAyB;QACjD,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,MAAM,OAAO,GAAiF,EAAE,CAAC;QACjG,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;gBAChD,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;oBAAE,SAAS;gBAClD,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,OAAO,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -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;
|
|
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"}
|