sentinel-agentos 0.3.7 → 0.3.8
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/package.json +1 -1
- package/LICENSE +0 -21
- package/README.md +0 -1797
- package/dist/adapters/evaluation-bridge.d.ts +0 -78
- package/dist/adapters/evaluation-bridge.d.ts.map +0 -1
- package/dist/adapters/evaluation-bridge.js +0 -273
- package/dist/adapters/evaluation-bridge.js.map +0 -1
- package/dist/adapters/memory-bridge.d.ts +0 -110
- package/dist/adapters/memory-bridge.d.ts.map +0 -1
- package/dist/adapters/memory-bridge.js +0 -316
- package/dist/adapters/memory-bridge.js.map +0 -1
- package/dist/adapters/migrate.d.ts +0 -2
- package/dist/adapters/migrate.d.ts.map +0 -1
- package/dist/adapters/migrate.js +0 -63
- package/dist/adapters/migrate.js.map +0 -1
- package/dist/api.d.ts +0 -151
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js +0 -179
- package/dist/api.js.map +0 -1
- package/dist/cli.d.ts +0 -16
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -350
- package/dist/cli.js.map +0 -1
- package/dist/core.d.ts +0 -156
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js +0 -400
- package/dist/core.js.map +0 -1
- package/dist/dashboard.html +0 -175
- package/dist/evaluator/exec-evaluator.d.ts +0 -102
- package/dist/evaluator/exec-evaluator.d.ts.map +0 -1
- package/dist/evaluator/exec-evaluator.js +0 -266
- package/dist/evaluator/exec-evaluator.js.map +0 -1
- package/dist/evaluator/feedback.d.ts +0 -96
- package/dist/evaluator/feedback.d.ts.map +0 -1
- package/dist/evaluator/feedback.js +0 -419
- package/dist/evaluator/feedback.js.map +0 -1
- package/dist/evaluator/profiler.d.ts +0 -55
- package/dist/evaluator/profiler.d.ts.map +0 -1
- package/dist/evaluator/profiler.js +0 -130
- package/dist/evaluator/profiler.js.map +0 -1
- package/dist/guard/audit-log.d.ts +0 -47
- package/dist/guard/audit-log.d.ts.map +0 -1
- package/dist/guard/audit-log.js +0 -199
- package/dist/guard/audit-log.js.map +0 -1
- package/dist/guard/container-sandbox.d.ts +0 -25
- package/dist/guard/container-sandbox.d.ts.map +0 -1
- package/dist/guard/container-sandbox.js +0 -145
- package/dist/guard/container-sandbox.js.map +0 -1
- package/dist/guard/risk-gate.d.ts +0 -101
- package/dist/guard/risk-gate.d.ts.map +0 -1
- package/dist/guard/risk-gate.js +0 -200
- package/dist/guard/risk-gate.js.map +0 -1
- package/dist/guard/sandbox.d.ts +0 -112
- package/dist/guard/sandbox.d.ts.map +0 -1
- package/dist/guard/sandbox.js +0 -379
- package/dist/guard/sandbox.js.map +0 -1
- package/dist/guard/schema-gate.d.ts +0 -90
- package/dist/guard/schema-gate.d.ts.map +0 -1
- package/dist/guard/schema-gate.js +0 -452
- package/dist/guard/schema-gate.js.map +0 -1
- package/dist/guard/snapshot-verify.d.ts +0 -111
- package/dist/guard/snapshot-verify.d.ts.map +0 -1
- package/dist/guard/snapshot-verify.js +0 -571
- package/dist/guard/snapshot-verify.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -59
- package/dist/index.js.map +0 -1
- package/dist/memory/episodic.d.ts +0 -76
- package/dist/memory/episodic.d.ts.map +0 -1
- package/dist/memory/episodic.js +0 -289
- package/dist/memory/episodic.js.map +0 -1
- package/dist/memory/semantic.d.ts +0 -68
- package/dist/memory/semantic.d.ts.map +0 -1
- package/dist/memory/semantic.js +0 -299
- package/dist/memory/semantic.js.map +0 -1
- package/dist/memory/working.d.ts +0 -53
- package/dist/memory/working.d.ts.map +0 -1
- package/dist/memory/working.js +0 -166
- package/dist/memory/working.js.map +0 -1
- package/dist/middleware/openclaw.d.ts +0 -45
- package/dist/middleware/openclaw.d.ts.map +0 -1
- package/dist/middleware/openclaw.js +0 -95
- package/dist/middleware/openclaw.js.map +0 -1
- package/dist/middleware/wrapper.d.ts +0 -54
- package/dist/middleware/wrapper.d.ts.map +0 -1
- package/dist/middleware/wrapper.js +0 -155
- package/dist/middleware/wrapper.js.map +0 -1
- package/dist/server.d.ts +0 -45
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -256
- package/dist/server.js.map +0 -1
- package/dist/types/index.d.ts +0 -228
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -23
- package/dist/types/index.js.map +0 -1
- package/scripts/sentinel-light.js +0 -234
package/dist/api.js
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AgentOSAPI = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* AgentOS API — SDK protocol layer.
|
|
6
|
-
*
|
|
7
|
-
* JSON-RPC 2.0 compatible interface for external agent frameworks.
|
|
8
|
-
* No HTTP/WS server in v1.0 — this is an in-process SDK API.
|
|
9
|
-
*
|
|
10
|
-
* Methods are named as `namespace.method` per OpenRPC convention:
|
|
11
|
-
* - guard.schema.registerRule
|
|
12
|
-
* - agentos.pipeline.execute
|
|
13
|
-
* - memory.context.inject
|
|
14
|
-
* - audit.query
|
|
15
|
-
* - profile.get
|
|
16
|
-
*/
|
|
17
|
-
class AgentOSAPI {
|
|
18
|
-
aos;
|
|
19
|
-
constructor(aos) {
|
|
20
|
-
this.aos = aos;
|
|
21
|
-
}
|
|
22
|
-
// ========== Guard Methods ==========
|
|
23
|
-
/** Register a schema validation rule */
|
|
24
|
-
guardRegisterRule(rule) {
|
|
25
|
-
this.aos.guard.schema.registerRule(rule);
|
|
26
|
-
}
|
|
27
|
-
/** Register multiple schema rules at once */
|
|
28
|
-
guardRegisterRules(rules) {
|
|
29
|
-
this.aos.guard.schema.registerRules(rules);
|
|
30
|
-
}
|
|
31
|
-
/** Check if a tool has schema rules */
|
|
32
|
-
guardHasRule(toolName) {
|
|
33
|
-
return this.aos.guard.schema.hasRule(toolName);
|
|
34
|
-
}
|
|
35
|
-
/** Get all registered schema rules */
|
|
36
|
-
guardGetRules() {
|
|
37
|
-
return this.aos.guard.schema.getRules();
|
|
38
|
-
}
|
|
39
|
-
/** Evaluate risk score for a tool call */
|
|
40
|
-
guardEvaluateRisk(toolName, params) {
|
|
41
|
-
const result = this.aos.guard.risk.evaluate(toolName, params);
|
|
42
|
-
return {
|
|
43
|
-
score: result.score,
|
|
44
|
-
action: result.action,
|
|
45
|
-
dimensions: { ...result.dimensions },
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
/** Update risk thresholds */
|
|
49
|
-
guardSetRiskThresholds(thresholds) {
|
|
50
|
-
this.aos.guard.risk.setThresholds(thresholds);
|
|
51
|
-
}
|
|
52
|
-
// ========== Pipeline Methods ==========
|
|
53
|
-
/** Execute the full pre-exec pipeline (before tool runs) */
|
|
54
|
-
async pipelineExecute(params) {
|
|
55
|
-
const result = this.aos.executePipeline({
|
|
56
|
-
sessionId: params.sessionId,
|
|
57
|
-
agentId: params.agentId,
|
|
58
|
-
toolName: params.toolName,
|
|
59
|
-
parameters: params.toolParameters,
|
|
60
|
-
affectedFiles: params.affectedFiles,
|
|
61
|
-
});
|
|
62
|
-
return {
|
|
63
|
-
preExec: result.preExec,
|
|
64
|
-
snapshot: result.snapshot,
|
|
65
|
-
profile: result.profile,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
/** Complete the pipeline after tool execution */
|
|
69
|
-
pipelineComplete(params) {
|
|
70
|
-
return this.aos.completeExecution({
|
|
71
|
-
...params,
|
|
72
|
-
retryCount: params.retryCount ?? 0,
|
|
73
|
-
wasSelfCorrected: params.wasSelfCorrected ?? false,
|
|
74
|
-
hadTimeout: params.hadTimeout ?? false,
|
|
75
|
-
userAccepted: params.userAccepted ?? true,
|
|
76
|
-
userProvidedEdit: params.userProvidedEdit ?? false,
|
|
77
|
-
resultWasUsed: params.resultWasUsed ?? false,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
// ========== Memory Methods ==========
|
|
81
|
-
/** Inject memory context for session startup */
|
|
82
|
-
memoryInjectContext() {
|
|
83
|
-
return this.aos.injectContext();
|
|
84
|
-
}
|
|
85
|
-
/** Add a working memory message */
|
|
86
|
-
memoryAddMessage(role, content) {
|
|
87
|
-
this.aos.memory.working.addMessage(role, content);
|
|
88
|
-
}
|
|
89
|
-
/** Set current task */
|
|
90
|
-
memorySetTask(task) {
|
|
91
|
-
this.aos.memory.working.setTask({
|
|
92
|
-
description: task.description,
|
|
93
|
-
steps: task.steps.map((s) => ({
|
|
94
|
-
step: s.step,
|
|
95
|
-
status: s.status,
|
|
96
|
-
})),
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
/** Cache a tool result */
|
|
100
|
-
memoryCacheResult(toolName, result) {
|
|
101
|
-
this.aos.memory.working.cacheToolResult(toolName, result);
|
|
102
|
-
}
|
|
103
|
-
/** Record an episodic event */
|
|
104
|
-
memoryRecordEvent(type, content, tags, relatedEntities) {
|
|
105
|
-
this.aos.memory.episodic.record(type, content, tags, relatedEntities);
|
|
106
|
-
}
|
|
107
|
-
/** Set a semantic user preference */
|
|
108
|
-
memorySetPreference(key, value) {
|
|
109
|
-
this.aos.memory.semantic.setPreference(key, value);
|
|
110
|
-
}
|
|
111
|
-
/** Get a semantic user preference */
|
|
112
|
-
memoryGetPreference(key) {
|
|
113
|
-
return this.aos.memory.semantic.getPreference(key);
|
|
114
|
-
}
|
|
115
|
-
/** Learn a rule in semantic memory */
|
|
116
|
-
memoryLearnRule(rule, source) {
|
|
117
|
-
this.aos.memory.semantic.learnRule(rule, source);
|
|
118
|
-
}
|
|
119
|
-
/** Define a glossary term */
|
|
120
|
-
memoryDefineTerm(term, meaning) {
|
|
121
|
-
this.aos.memory.semantic.defineTerm(term, meaning);
|
|
122
|
-
}
|
|
123
|
-
/** Set project context */
|
|
124
|
-
memorySetProjectContext(projectName, context) {
|
|
125
|
-
this.aos.memory.semantic.setProjectContext(projectName, context);
|
|
126
|
-
}
|
|
127
|
-
// ========== Audit Methods ==========
|
|
128
|
-
/** Query audit log */
|
|
129
|
-
auditQuery(filter = {}) {
|
|
130
|
-
return this.aos.guard.audit.query(filter);
|
|
131
|
-
}
|
|
132
|
-
/** Get audit statistics */
|
|
133
|
-
auditStats() {
|
|
134
|
-
return this.aos.getAuditStats();
|
|
135
|
-
}
|
|
136
|
-
// ========== Feedback Methods ==========
|
|
137
|
-
/** Record implicit user feedback */
|
|
138
|
-
recordFeedback(signal, sessionId, operationId, confidence) {
|
|
139
|
-
this.aos.recordFeedback(signal, sessionId, operationId, confidence);
|
|
140
|
-
}
|
|
141
|
-
/** Get satisfaction score */
|
|
142
|
-
getSatisfaction(sessionId, recentHours) {
|
|
143
|
-
return this.aos.evaluator.feedback.getSatisfactionScore(sessionId, recentHours);
|
|
144
|
-
}
|
|
145
|
-
/** Get feedback statistics */
|
|
146
|
-
feedbackStats() {
|
|
147
|
-
return this.aos.evaluator.feedback.stats();
|
|
148
|
-
}
|
|
149
|
-
// ========== Profile Methods ==========
|
|
150
|
-
/** Get agent quality profile */
|
|
151
|
-
getProfile(sessionId) {
|
|
152
|
-
return this.aos.getProfile(sessionId);
|
|
153
|
-
}
|
|
154
|
-
/** Get agent status report (human-readable) */
|
|
155
|
-
getStatusReport() {
|
|
156
|
-
return this.aos.statusReport();
|
|
157
|
-
}
|
|
158
|
-
/** Get session overview */
|
|
159
|
-
getSessionOverview() {
|
|
160
|
-
return {
|
|
161
|
-
profile: this.aos.getProfile(),
|
|
162
|
-
audit: this.aos.getAuditStats(),
|
|
163
|
-
satisfaction: this.aos.evaluator.feedback.getSatisfactionScore(),
|
|
164
|
-
workingMemory: {
|
|
165
|
-
messages: this.aos.memory.working.recentMessages.length,
|
|
166
|
-
openFiles: this.aos.memory.working.openFiles.length,
|
|
167
|
-
budget: this.aos.memory.working.budget,
|
|
168
|
-
},
|
|
169
|
-
episodicEvents: this.aos.memory.episodic.count,
|
|
170
|
-
semanticRules: this.aos.memory.semantic.getAllRules().length,
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
/** End session and clean up */
|
|
174
|
-
endSession(sessionId) {
|
|
175
|
-
this.aos.endSession(sessionId);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
exports.AgentOSAPI = AgentOSAPI;
|
|
179
|
-
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;AAMA;;;;;;;;;;;;GAYG;AACH,MAAa,UAAU;IACb,GAAG,CAAU;IAErB,YAAY,GAAY;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,sCAAsC;IAEtC,wCAAwC;IACxC,iBAAiB,CAAC,IAAgB;QAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,6CAA6C;IAC7C,kBAAkB,CAAC,KAAmB;QACpC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,uCAAuC;IACvC,YAAY,CAAC,QAAgB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,sCAAsC;IACtC,aAAa;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,0CAA0C;IAC1C,iBAAiB,CAAC,QAAgB,EAAE,MAA+B;QAKjE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,sBAAsB,CAAC,UAKtB;QACC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,yCAAyC;IAEzC,4DAA4D;IAC5D,KAAK,CAAC,eAAe,CAAC,MAOrB;QAMC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,cAAc;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,gBAAgB,CAAC,MAehB;QAMC,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAChC,GAAG,MAAM;YACT,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,KAAK;YAClD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;YACtC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;YACzC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,KAAK;YAClD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IAEvC,gDAAgD;IAChD,mBAAmB;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAClC,CAAC;IAED,mCAAmC;IACnC,gBAAgB,CAAC,IAA+B,EAAE,OAAe;QAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,uBAAuB;IACvB,aAAa,CAAC,IAA6E;QACzF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAA4C;aACvD,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,iBAAiB,CAAC,QAAgB,EAAE,MAAe;QACjD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,+BAA+B;IAC/B,iBAAiB,CACf,IAAS,EACT,OAAe,EACf,IAAe,EACf,eAA0B;QAE1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;IACxE,CAAC;IAED,qCAAqC;IACrC,mBAAmB,CAAC,GAAW,EAAE,KAAc;QAC7C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,qCAAqC;IACrC,mBAAmB,CAAc,GAAW;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAI,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,sCAAsC;IACtC,eAAe,CAAC,IAAY,EAAE,MAAc;QAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,6BAA6B;IAC7B,gBAAgB,CAAC,IAAY,EAAE,OAAe;QAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,0BAA0B;IAC1B,uBAAuB,CACrB,WAAmB,EACnB,OAMC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,sCAAsC;IAEtC,sBAAsB;IACtB,UAAU,CAAC,SAOP,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,2BAA2B;IAC3B,UAAU;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAClC,CAAC;IAED,yCAAyC;IAEzC,oCAAoC;IACpC,cAAc,CACZ,MAAiE,EACjE,SAAiB,EACjB,WAAoB,EACpB,UAAmB;QAEnB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED,6BAA6B;IAC7B,eAAe,CAAC,SAAkB,EAAE,WAAoB;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAClF,CAAC;IAED,8BAA8B;IAC9B,aAAa;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,wCAAwC;IAExC,gCAAgC;IAChC,UAAU,CAAC,SAAkB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,+CAA+C;IAC/C,eAAe;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IACjC,CAAC;IAED,2BAA2B;IAC3B,kBAAkB;QAYhB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YAC/B,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE;YAChE,aAAa,EAAE;gBACb,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM;gBACvD,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM;gBACnD,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;aACvC;YACD,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;YAC9C,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM;SAC7D,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,UAAU,CAAC,SAAiB;QAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;CACF;AAjRD,gCAiRC"}
|
package/dist/cli.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Sentinel AgentOS CLI
|
|
4
|
-
*
|
|
5
|
-
* Command-line interface for Sentinel AgentOS operations.
|
|
6
|
-
*
|
|
7
|
-
* Quick start:
|
|
8
|
-
* npx sentinel-agentos validate exec "command=rm -rf /"
|
|
9
|
-
* npx sentinel-agentos validate write_file path=demo.ts content=hello
|
|
10
|
-
* npx sentinel-agentos risk exec command="npm test"
|
|
11
|
-
* npx sentinel-agentos audit --limit 10
|
|
12
|
-
* npx sentinel-agentos status
|
|
13
|
-
* npx sentinel-agentos server --port 3300
|
|
14
|
-
*/
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
|
package/dist/cli.js
DELETED
|
@@ -1,350 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
/**
|
|
4
|
-
* Sentinel AgentOS CLI
|
|
5
|
-
*
|
|
6
|
-
* Command-line interface for Sentinel AgentOS operations.
|
|
7
|
-
*
|
|
8
|
-
* Quick start:
|
|
9
|
-
* npx sentinel-agentos validate exec "command=rm -rf /"
|
|
10
|
-
* npx sentinel-agentos validate write_file path=demo.ts content=hello
|
|
11
|
-
* npx sentinel-agentos risk exec command="npm test"
|
|
12
|
-
* npx sentinel-agentos audit --limit 10
|
|
13
|
-
* npx sentinel-agentos status
|
|
14
|
-
* npx sentinel-agentos server --port 3300
|
|
15
|
-
*/
|
|
16
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
-
}
|
|
22
|
-
Object.defineProperty(o, k2, desc);
|
|
23
|
-
}) : (function(o, m, k, k2) {
|
|
24
|
-
if (k2 === undefined) k2 = k;
|
|
25
|
-
o[k2] = m[k];
|
|
26
|
-
}));
|
|
27
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
-
}) : function(o, v) {
|
|
30
|
-
o["default"] = v;
|
|
31
|
-
});
|
|
32
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
33
|
-
var ownKeys = function(o) {
|
|
34
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
35
|
-
var ar = [];
|
|
36
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
37
|
-
return ar;
|
|
38
|
-
};
|
|
39
|
-
return ownKeys(o);
|
|
40
|
-
};
|
|
41
|
-
return function (mod) {
|
|
42
|
-
if (mod && mod.__esModule) return mod;
|
|
43
|
-
var result = {};
|
|
44
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
45
|
-
__setModuleDefault(result, mod);
|
|
46
|
-
return result;
|
|
47
|
-
};
|
|
48
|
-
})();
|
|
49
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
const core_1 = require("./core");
|
|
51
|
-
function printHelp() {
|
|
52
|
-
console.log(`
|
|
53
|
-
🛡️ Sentinel AgentOS CLI
|
|
54
|
-
|
|
55
|
-
Usage:
|
|
56
|
-
sentinel-agentos validate <tool> [key=value...]
|
|
57
|
-
sentinel-agentos risk <tool> [key=value...]
|
|
58
|
-
sentinel-agentos audit [--limit N]
|
|
59
|
-
sentinel-agentos stats
|
|
60
|
-
sentinel-agentos profile
|
|
61
|
-
sentinel-agentos status
|
|
62
|
-
sentinel-agentos server [--port N] [--token ***
|
|
63
|
-
sentinel-agentos init (一键安装 Guard Skill 到 OpenClaw workspace)
|
|
64
|
-
sentinel-agentos memory
|
|
65
|
-
sentinel-agentos help
|
|
66
|
-
|
|
67
|
-
Quick start:
|
|
68
|
-
sentinel-agentos init # 安装 Sentinel Guard Skill → 自动启用全部功能
|
|
69
|
-
sentinel-agentos status # 查看质量报告
|
|
70
|
-
|
|
71
|
-
Examples:
|
|
72
|
-
sentinel-agentos validate exec command="rm -rf /"
|
|
73
|
-
sentinel-agentos validate write_file path=src/main.ts content="console.log(1)"
|
|
74
|
-
sentinel-agentos risk exec command="sudo reboot"
|
|
75
|
-
sentinel-agentos audit --limit 10
|
|
76
|
-
sentinel-agentos status
|
|
77
|
-
sentinel-agentos server --port 3300 --token ***
|
|
78
|
-
`);
|
|
79
|
-
}
|
|
80
|
-
function fatal(msg) {
|
|
81
|
-
console.error(`❌ ${msg}`);
|
|
82
|
-
process.exit(1);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Parse positional key=value pairs into a params object.
|
|
86
|
-
* Supports: key=value, key="value with spaces", key='value'
|
|
87
|
-
*/
|
|
88
|
-
function parseParams(args) {
|
|
89
|
-
const params = {};
|
|
90
|
-
for (const arg of args) {
|
|
91
|
-
const eqIdx = arg.indexOf('=');
|
|
92
|
-
if (eqIdx === -1)
|
|
93
|
-
continue;
|
|
94
|
-
const key = arg.slice(0, eqIdx);
|
|
95
|
-
let val = arg.slice(eqIdx + 1);
|
|
96
|
-
// Strip quotes if present
|
|
97
|
-
if ((val.startsWith('"') && val.endsWith('"')) ||
|
|
98
|
-
(val.startsWith("'") && val.endsWith("'"))) {
|
|
99
|
-
val = val.slice(1, -1);
|
|
100
|
-
}
|
|
101
|
-
// Auto-detect type
|
|
102
|
-
if (val === 'true')
|
|
103
|
-
params[key] = true;
|
|
104
|
-
else if (val === 'false')
|
|
105
|
-
params[key] = false;
|
|
106
|
-
else if (val === 'null')
|
|
107
|
-
params[key] = null;
|
|
108
|
-
else if (/^\d+$/.test(val))
|
|
109
|
-
params[key] = parseInt(val, 10);
|
|
110
|
-
else if (/^\d+\.\d+$/.test(val))
|
|
111
|
-
params[key] = parseFloat(val);
|
|
112
|
-
else
|
|
113
|
-
params[key] = val;
|
|
114
|
-
}
|
|
115
|
-
return params;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Parse --flag value options from args.
|
|
119
|
-
* Skips positional key=value items.
|
|
120
|
-
*/
|
|
121
|
-
function parseFlags(args) {
|
|
122
|
-
const result = {};
|
|
123
|
-
for (let i = 0; i < args.length; i++) {
|
|
124
|
-
const arg = args[i];
|
|
125
|
-
if (arg && arg.startsWith('--')) {
|
|
126
|
-
const key = arg.replace(/^--/, '');
|
|
127
|
-
const next = args[i + 1];
|
|
128
|
-
// Don't consume if next is a flag or key=value
|
|
129
|
-
if (next && !next.startsWith('--') && !next.includes('=')) {
|
|
130
|
-
result[key] = next;
|
|
131
|
-
i++;
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
result[key] = 'true';
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return result;
|
|
139
|
-
}
|
|
140
|
-
async function main() {
|
|
141
|
-
const rawArgs = process.argv.slice(2);
|
|
142
|
-
const cmd = rawArgs[0] ?? '';
|
|
143
|
-
if (!cmd || cmd === 'help') {
|
|
144
|
-
printHelp();
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
const aos = new core_1.AgentOS();
|
|
148
|
-
switch (cmd) {
|
|
149
|
-
case 'validate':
|
|
150
|
-
case 'risk': {
|
|
151
|
-
// New syntax: sentinel-agentos validate <tool> [key=value...]
|
|
152
|
-
// Old syntax still works: --tool <tool> --params '<json>'
|
|
153
|
-
const flags = parseFlags(rawArgs.slice(1));
|
|
154
|
-
let tool;
|
|
155
|
-
let params;
|
|
156
|
-
// New positional syntax
|
|
157
|
-
const positional = rawArgs.slice(1).filter(a => !a.startsWith('--'));
|
|
158
|
-
const firstPos = positional[0];
|
|
159
|
-
const isNewSyntax = positional.length > 0 && firstPos !== undefined && !firstPos.includes('=');
|
|
160
|
-
if (isNewSyntax && positional[0]) {
|
|
161
|
-
tool = positional[0];
|
|
162
|
-
params = parseParams(positional.slice(1));
|
|
163
|
-
}
|
|
164
|
-
else if (isNewSyntax) {
|
|
165
|
-
fatal(`Usage: sentinel-agentos ${cmd} <tool> [key=value...]`);
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
// Old --tool + --params syntax
|
|
169
|
-
const toolFlag = flags.tool ?? rawArgs[1];
|
|
170
|
-
tool = toolFlag ?? '';
|
|
171
|
-
if (!tool)
|
|
172
|
-
fatal(`Usage: sentinel-agentos ${cmd} <tool> [key=value...]`);
|
|
173
|
-
const paramsJson = flags.params ?? '{}';
|
|
174
|
-
try {
|
|
175
|
-
params = JSON.parse(paramsJson);
|
|
176
|
-
}
|
|
177
|
-
catch {
|
|
178
|
-
params = parseParams(rawArgs.slice(2));
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
const result = aos.executePipeline({
|
|
182
|
-
sessionId: 'cli',
|
|
183
|
-
agentId: 'cli',
|
|
184
|
-
toolName: tool,
|
|
185
|
-
parameters: params,
|
|
186
|
-
});
|
|
187
|
-
if (cmd === 'validate') {
|
|
188
|
-
console.log(JSON.stringify(result.preExec.schemaCheck, null, 2));
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
console.log(JSON.stringify(result.preExec.riskScore, null, 2));
|
|
192
|
-
}
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
case 'audit': {
|
|
196
|
-
const flags = parseFlags(rawArgs.slice(1));
|
|
197
|
-
const limit = parseInt(flags.limit ?? '20', 10);
|
|
198
|
-
const entries = aos.guard.audit.query({ limit });
|
|
199
|
-
console.log(JSON.stringify(entries, null, 2));
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
case 'stats': {
|
|
203
|
-
const stats = aos.getAuditStats();
|
|
204
|
-
console.log(JSON.stringify(stats, null, 2));
|
|
205
|
-
break;
|
|
206
|
-
}
|
|
207
|
-
case 'profile': {
|
|
208
|
-
const profile = aos.getProfile();
|
|
209
|
-
console.log(JSON.stringify(profile, null, 2));
|
|
210
|
-
break;
|
|
211
|
-
}
|
|
212
|
-
case 'status': {
|
|
213
|
-
console.log(aos.statusReport());
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
216
|
-
case 'server': {
|
|
217
|
-
const flags = parseFlags(rawArgs.slice(1));
|
|
218
|
-
const port = parseInt(flags.port ?? '3300', 10);
|
|
219
|
-
const host = flags.host ?? '127.0.0.1';
|
|
220
|
-
const token = flags.token;
|
|
221
|
-
try {
|
|
222
|
-
const { createServer } = await Promise.resolve().then(() => __importStar(require('./server')));
|
|
223
|
-
const server = createServer({ port, host, apiToken: token });
|
|
224
|
-
await server.start();
|
|
225
|
-
console.log('Press Ctrl+C to stop');
|
|
226
|
-
process.on('SIGINT', async () => {
|
|
227
|
-
console.log('\nShutting down...');
|
|
228
|
-
await server.stop();
|
|
229
|
-
process.exit(0);
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
catch (err) {
|
|
233
|
-
fatal(`Failed to start server: ${err.message}`);
|
|
234
|
-
}
|
|
235
|
-
break;
|
|
236
|
-
}
|
|
237
|
-
case 'memory': {
|
|
238
|
-
const context = aos.injectContext();
|
|
239
|
-
console.log(context || '(no memory context yet)');
|
|
240
|
-
break;
|
|
241
|
-
}
|
|
242
|
-
case 'init': {
|
|
243
|
-
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
244
|
-
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
245
|
-
// Find OpenClaw workspace (from env or common locations)
|
|
246
|
-
const home = process.env.USERPROFILE || process.env.HOME || '~';
|
|
247
|
-
const workspaceDir = process.env.OPENCLAW_WORKSPACE || path.join(home, '.openclaw', 'workspace');
|
|
248
|
-
if (!fs.existsSync(workspaceDir)) {
|
|
249
|
-
fatal(`Workspace not found: ${workspaceDir}. Set OPENCLAW_WORKSPACE or run from workspace root.`);
|
|
250
|
-
}
|
|
251
|
-
const skillDir = path.join(workspaceDir, 'skills', 'sentinel-guard');
|
|
252
|
-
const scriptsDir = path.join(skillDir, 'scripts');
|
|
253
|
-
if (fs.existsSync(skillDir)) {
|
|
254
|
-
console.log('⚠ Sentinel Guard skill already installed at:');
|
|
255
|
-
console.log(' ' + skillDir);
|
|
256
|
-
console.log('\nRun sentinel-agentos status to check current state.');
|
|
257
|
-
return;
|
|
258
|
-
}
|
|
259
|
-
// Create skill directory
|
|
260
|
-
fs.mkdirSync(skillDir, { recursive: true });
|
|
261
|
-
fs.mkdirSync(scriptsDir, { recursive: true });
|
|
262
|
-
// Source light guard from dist/scripts
|
|
263
|
-
const guardSrc = path.join(__dirname, '..', 'scripts', 'sentinel-light.js');
|
|
264
|
-
let guardContent;
|
|
265
|
-
if (fs.existsSync(guardSrc)) {
|
|
266
|
-
guardContent = fs.readFileSync(guardSrc, 'utf-8');
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
// Fallback: use the one from src (dev mode)
|
|
270
|
-
const fallback = path.join(__dirname, '..', '..', 'scripts', 'sentinel-light.js');
|
|
271
|
-
if (fs.existsSync(fallback)) {
|
|
272
|
-
guardContent = fs.readFileSync(fallback, 'utf-8');
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
275
|
-
fatal('Guard script not found. Reinstall sentinel-agentos.');
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
// Write guard script
|
|
279
|
-
fs.writeFileSync(path.join(skillDir, 'sentinel-guard.js'), guardContent);
|
|
280
|
-
// Write SKILL.md
|
|
281
|
-
const skillMd = `---
|
|
282
|
-
name: sentinel-guard
|
|
283
|
-
description: "Sentinel AgentOS Guard — 确定性代码审查守卫,拦截危险命令和敏感文件操作。"
|
|
284
|
-
---
|
|
285
|
-
|
|
286
|
-
# Sentinel AgentOS Guard
|
|
287
|
-
|
|
288
|
-
拦截危险操作和敏感文件修改,基于确定性规则而非 LLM。
|
|
289
|
-
|
|
290
|
-
## 使用
|
|
291
|
-
|
|
292
|
-
\`\`\`javascript
|
|
293
|
-
const guard = require('./sentinel-guard');
|
|
294
|
-
const check = guard.preCheck('exec', { command: 'rm -rf /' });
|
|
295
|
-
if (!check.passed) return { blocked: true, reason: check.reason };
|
|
296
|
-
\`\`\`
|
|
297
|
-
|
|
298
|
-
## 三层防护
|
|
299
|
-
|
|
300
|
-
- 🛡️ 命令黑名单:rm -rf /、sudo rm、mkfs、fork bomb 等
|
|
301
|
-
- 🔒 Schema Gate:拦截 .env、*.key、*.pem 等敏感文件
|
|
302
|
-
- ⚠️ Risk Gate:git push --force、npm publish 需确认
|
|
303
|
-
|
|
304
|
-
## 快速测试
|
|
305
|
-
|
|
306
|
-
\`\`\`bash
|
|
307
|
-
node scripts/test-suite.js
|
|
308
|
-
\`\`\`
|
|
309
|
-
`;
|
|
310
|
-
fs.writeFileSync(path.join(skillDir, 'SKILL.md'), skillMd);
|
|
311
|
-
// Write test suite
|
|
312
|
-
const testContent = `#!/usr/bin/env node
|
|
313
|
-
const guard = require('../sentinel-guard');
|
|
314
|
-
['exec rm -rf /', 'write .env', 'exec npm test'].forEach(t => {
|
|
315
|
-
const s = t.split(' ');
|
|
316
|
-
const r = guard.preCheck(s[0], s[0] === 'exec' ? {command: s.slice(1).join(' ')} : {path: s[1], content:'x'});
|
|
317
|
-
console.log(r.block ? '🚫 ' + r.reason : '✅ ' + t);
|
|
318
|
-
});
|
|
319
|
-
`;
|
|
320
|
-
fs.writeFileSync(path.join(scriptsDir, 'test-suite.js'), testContent);
|
|
321
|
-
// Add .sentinel-audit to .gitignore if exists
|
|
322
|
-
const gitignore = path.join(workspaceDir, '.gitignore');
|
|
323
|
-
if (fs.existsSync(gitignore)) {
|
|
324
|
-
const giContent = fs.readFileSync(gitignore, 'utf-8');
|
|
325
|
-
if (!giContent.includes('.sentinel-audit')) {
|
|
326
|
-
fs.appendFileSync(gitignore, '\n# Sentinel AgentOS audit logs\n.sentinel-audit/\n');
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
console.log('✅ Sentinel AgentOS Guard 安装完成!\n');
|
|
330
|
-
console.log('📂 Skill: ' + skillDir);
|
|
331
|
-
console.log('🛡️ Guard: ' + path.join(skillDir, 'sentinel-guard.js'));
|
|
332
|
-
console.log('');
|
|
333
|
-
console.log('下一步:');
|
|
334
|
-
console.log(' 1. Agent 重启后自动加载 Guard');
|
|
335
|
-
console.log(' 2. 运行 sentinel-agentos status 查看状态');
|
|
336
|
-
console.log(' 3. 或在代码中 require: const guard = require("./sentinel-guard")');
|
|
337
|
-
break;
|
|
338
|
-
}
|
|
339
|
-
default:
|
|
340
|
-
fatal(`Unknown command: ${cmd}. Run 'sentinel-agentos help' for usage.`);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
// Only auto-run when invoked directly, not via require/test
|
|
344
|
-
if (require.main === module) {
|
|
345
|
-
main().catch((err) => {
|
|
346
|
-
console.error('❌', err.message);
|
|
347
|
-
process.exit(1);
|
|
348
|
-
});
|
|
349
|
-
}
|
|
350
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iCAAiC;AAEjC,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Bb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,GAAW;IACxB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,IAAc;IACjC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,SAAS;QAE3B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAE/B,0BAA0B;QAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,mBAAmB;QACnB,IAAI,GAAG,KAAK,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;aAClC,IAAI,GAAG,KAAK,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACzC,IAAI,GAAG,KAAK,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;aACvC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aACvD,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;;YAC1D,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,+CAA+C;YAC/C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACnB,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QAC3B,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,cAAO,EAAE,CAAC;IAE1B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,8DAA8D;YAC9D,0DAA0D;YAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAY,CAAC;YACjB,IAAI,MAA+B,CAAC;YAEpC,wBAAwB;YACxB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE/F,IAAI,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACvB,KAAK,CAAC,2BAA2B,GAAG,wBAAwB,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,+BAA+B;gBAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,GAAG,QAAQ,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI;oBAAE,KAAK,CAAC,2BAA2B,GAAG,wBAAwB,CAAC,CAAC;gBACzE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;gBACxC,IAAI,CAAC;oBAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;YAC5F,CAAC;YAED,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC;gBACjC,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,MAAM;aACnB,CAAC,CAAC;YAEH,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM;QACR,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM;QACR,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;YAChC,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC;YACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAE1B,IAAI,CAAC;gBACH,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;gBAClD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC7D,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBAEpC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;oBAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAClC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,KAAK,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,yBAAyB,CAAC,CAAC;YAClD,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,GAAG,wDAAa,IAAI,GAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,wDAAa,MAAM,GAAC,CAAC;YAElC,yDAAyD;YACzD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;YAChE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAEjG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,wBAAwB,YAAY,sDAAsD,CAAC,CAAC;YACpG,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACrE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAElD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;gBACrE,OAAO;YACT,CAAC;YAED,yBAAyB;YACzB,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE9C,uCAAuC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;YAC5E,IAAI,YAAoB,CAAC;YACzB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;gBAClF,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;YAED,qBAAqB;YACrB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,CAAC;YAEzE,iBAAiB;YACjB,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BrB,CAAC;YACI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;YAE3D,mBAAmB;YACnB,MAAM,WAAW,GAAG;;;;;;;CAOzB,CAAC;YACI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC;YAEtE,8CAA8C;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YACxD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACtD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC3C,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,qDAAqD,CAAC,CAAC;gBACtF,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,MAAM;QACR,CAAC;QAED;YACE,KAAK,CAAC,oBAAoB,GAAG,0CAA0C,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AACD,4DAA4D;AAC5D,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|