yuangs 2.28.0 → 2.30.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/README.md +290 -0
- package/dist/agent/contextManager.d.ts +30 -0
- package/dist/agent/contextManager.js +65 -0
- package/dist/agent/contextManager.js.map +1 -0
- package/dist/agent/executor.d.ts +11 -0
- package/dist/agent/executor.js +191 -0
- package/dist/agent/executor.js.map +1 -0
- package/dist/agent/fsm.d.ts +23 -0
- package/dist/agent/fsm.js +95 -0
- package/dist/agent/fsm.js.map +1 -0
- package/dist/agent/governance.d.ts +10 -0
- package/dist/agent/governance.js +154 -0
- package/dist/agent/governance.js.map +1 -0
- package/dist/agent/index.d.ts +9 -0
- package/dist/agent/index.js +16 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/llmAdapter.d.ts +6 -0
- package/dist/agent/llmAdapter.js +88 -0
- package/dist/agent/llmAdapter.js.map +1 -0
- package/dist/agent/loop.d.ts +21 -0
- package/dist/agent/loop.js +214 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/policy/engine.d.ts +14 -0
- package/dist/agent/policy/engine.js +76 -0
- package/dist/agent/policy/engine.js.map +1 -0
- package/dist/agent/policy/index.d.ts +3 -0
- package/dist/agent/policy/index.js +20 -0
- package/dist/agent/policy/index.js.map +1 -0
- package/dist/agent/policy/policies/noDangerousShell.d.ts +7 -0
- package/dist/agent/policy/policies/noDangerousShell.js +45 -0
- package/dist/agent/policy/policies/noDangerousShell.js.map +1 -0
- package/dist/agent/policy/types.d.ts +23 -0
- package/dist/agent/policy/types.js +3 -0
- package/dist/agent/policy/types.js.map +1 -0
- package/dist/agent/replay/events.d.ts +21 -0
- package/dist/agent/replay/events.js +3 -0
- package/dist/agent/replay/events.js.map +1 -0
- package/dist/agent/replay/index.d.ts +3 -0
- package/dist/agent/replay/index.js +20 -0
- package/dist/agent/replay/index.js.map +1 -0
- package/dist/agent/replay/recorder.d.ts +11 -0
- package/dist/agent/replay/recorder.js +51 -0
- package/dist/agent/replay/recorder.js.map +1 -0
- package/dist/agent/replay/replayer.d.ts +21 -0
- package/dist/agent/replay/replayer.js +65 -0
- package/dist/agent/replay/replayer.js.map +1 -0
- package/dist/agent/selectModel.js +4 -11
- package/dist/agent/selectModel.js.map +1 -1
- package/dist/agent/skills.d.ts +5 -0
- package/dist/agent/skills.js +7 -3
- package/dist/agent/skills.js.map +1 -1
- package/dist/agent/state.d.ts +99 -0
- package/dist/agent/state.js +3 -0
- package/dist/agent/state.js.map +1 -0
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.js +18 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/registryAPI.d.ts +22 -0
- package/dist/api/registryAPI.js +66 -0
- package/dist/api/registryAPI.js.map +1 -0
- package/dist/audit/index.d.ts +1 -0
- package/dist/audit/index.js +18 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/timeline.d.ts +75 -0
- package/dist/audit/timeline.js +254 -0
- package/dist/audit/timeline.js.map +1 -0
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/explainCommands.d.ts +2 -0
- package/dist/commands/explainCommands.js +36 -0
- package/dist/commands/explainCommands.js.map +1 -0
- package/dist/commands/registryCommands.d.ts +2 -0
- package/dist/commands/registryCommands.js +243 -0
- package/dist/commands/registryCommands.js.map +1 -0
- package/dist/commands/replayCommands.d.ts +2 -0
- package/dist/commands/replayCommands.js +75 -0
- package/dist/commands/replayCommands.js.map +1 -0
- package/dist/commands/skillsCommands.d.ts +2 -0
- package/dist/commands/skillsCommands.js +114 -0
- package/dist/commands/skillsCommands.js.map +1 -0
- package/dist/core/executionRecord.d.ts +8 -0
- package/dist/core/executionRecord.js +2 -0
- package/dist/core/executionRecord.js.map +1 -1
- package/dist/core/explain.d.ts +8 -0
- package/dist/core/explain.js +84 -0
- package/dist/core/explain.js.map +1 -0
- package/dist/core/replayDiff.d.ts +55 -0
- package/dist/core/replayDiff.js +205 -0
- package/dist/core/replayDiff.js.map +1 -0
- package/dist/core/replayEngine.d.ts +3 -0
- package/dist/core/replayEngine.js +23 -1
- package/dist/core/replayEngine.js.map +1 -1
- package/dist/core/validation.d.ts +1 -1
- package/dist/core/validation.js +1 -1
- package/dist/core/validation.js.map +1 -1
- package/dist/registry/errors.d.ts +21 -0
- package/dist/registry/errors.js +35 -0
- package/dist/registry/errors.js.map +1 -0
- package/dist/registry/index.d.ts +3 -0
- package/dist/registry/index.js +20 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/manifest.d.ts +43 -0
- package/dist/registry/manifest.js +32 -0
- package/dist/registry/manifest.js.map +1 -0
- package/dist/registry/registry.d.ts +20 -0
- package/dist/registry/registry.js +201 -0
- package/dist/registry/registry.js.map +1 -0
- package/dist/risk/explainer.d.ts +39 -0
- package/dist/risk/explainer.js +214 -0
- package/dist/risk/explainer.js.map +1 -0
- package/dist/risk/index.d.ts +1 -0
- package/dist/risk/index.js +18 -0
- package/dist/risk/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
export type AgentState = 'IDLE' | 'THINKING' | 'PROPOSING' | 'GOVERNING' | 'EXECUTING' | 'OBSERVING' | 'EVALUATING' | 'TERMINAL';
|
|
2
|
+
export type RiskLevel = 'low' | 'medium' | 'high';
|
|
3
|
+
export interface ProposedAction {
|
|
4
|
+
id: string;
|
|
5
|
+
type: 'tool_call' | 'code_diff' | 'shell_cmd' | 'answer';
|
|
6
|
+
payload: any;
|
|
7
|
+
riskLevel: RiskLevel;
|
|
8
|
+
reasoning: string;
|
|
9
|
+
}
|
|
10
|
+
export type GovernanceDecision = {
|
|
11
|
+
status: 'approved';
|
|
12
|
+
by: 'policy' | 'human';
|
|
13
|
+
timestamp: number;
|
|
14
|
+
} | {
|
|
15
|
+
status: 'rejected';
|
|
16
|
+
by: 'policy' | 'human';
|
|
17
|
+
reason: string;
|
|
18
|
+
timestamp: number;
|
|
19
|
+
} | {
|
|
20
|
+
status: 'modified';
|
|
21
|
+
by: 'human';
|
|
22
|
+
originalActionId: string;
|
|
23
|
+
modifiedAction: ProposedAction;
|
|
24
|
+
modificationReason: string;
|
|
25
|
+
timestamp: number;
|
|
26
|
+
};
|
|
27
|
+
export type EvaluationOutcome = {
|
|
28
|
+
kind: 'continue';
|
|
29
|
+
reason: 'incomplete' | 'failure_retry';
|
|
30
|
+
} | {
|
|
31
|
+
kind: 'terminate';
|
|
32
|
+
reason: 'goal_satisfied' | 'user_abort' | 'max_turns_exceeded';
|
|
33
|
+
} | {
|
|
34
|
+
kind: 'pause';
|
|
35
|
+
reason: 'await_human_input';
|
|
36
|
+
};
|
|
37
|
+
export interface AgentThought {
|
|
38
|
+
raw: string;
|
|
39
|
+
parsedPlan: any;
|
|
40
|
+
isDone: boolean;
|
|
41
|
+
type?: 'tool_call' | 'code_diff' | 'shell_cmd' | 'answer';
|
|
42
|
+
payload?: any;
|
|
43
|
+
reasoning?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ExecutionTurn {
|
|
46
|
+
turnId: number;
|
|
47
|
+
startTime: number;
|
|
48
|
+
endTime?: number;
|
|
49
|
+
contextSnapshot: {
|
|
50
|
+
inputHash: string;
|
|
51
|
+
systemPromptVersion: string;
|
|
52
|
+
toolSetVersion: string;
|
|
53
|
+
recentMessages: Array<{
|
|
54
|
+
role: string;
|
|
55
|
+
content: string;
|
|
56
|
+
timestamp: number;
|
|
57
|
+
}>;
|
|
58
|
+
};
|
|
59
|
+
thought?: AgentThought;
|
|
60
|
+
proposedAction?: ProposedAction;
|
|
61
|
+
governance?: GovernanceDecision;
|
|
62
|
+
executionResult?: {
|
|
63
|
+
success: boolean;
|
|
64
|
+
output: string;
|
|
65
|
+
error?: string;
|
|
66
|
+
artifacts?: string[];
|
|
67
|
+
};
|
|
68
|
+
observation?: {
|
|
69
|
+
summary: string;
|
|
70
|
+
artifacts: string[];
|
|
71
|
+
truncated?: boolean;
|
|
72
|
+
};
|
|
73
|
+
evaluation?: EvaluationOutcome;
|
|
74
|
+
}
|
|
75
|
+
export interface GovernanceLoopConfig {
|
|
76
|
+
maxTurns: number;
|
|
77
|
+
autoApproveLowRisk: boolean;
|
|
78
|
+
verbose: boolean;
|
|
79
|
+
}
|
|
80
|
+
export interface ToolExecutionResult {
|
|
81
|
+
success: boolean;
|
|
82
|
+
output: string;
|
|
83
|
+
error?: string;
|
|
84
|
+
artifacts?: string[];
|
|
85
|
+
}
|
|
86
|
+
export interface GovernanceContext {
|
|
87
|
+
input: string;
|
|
88
|
+
mode: 'chat' | 'command' | 'command+exec';
|
|
89
|
+
history: AIRequestMessage[];
|
|
90
|
+
files?: Array<{
|
|
91
|
+
path: string;
|
|
92
|
+
content: string;
|
|
93
|
+
}>;
|
|
94
|
+
}
|
|
95
|
+
interface AIRequestMessage {
|
|
96
|
+
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
97
|
+
content: string;
|
|
98
|
+
}
|
|
99
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/agent/state.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './registryAPI';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./registryAPI"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { MacroManifest, MacroPublishOptions, Capability } from '../registry/manifest';
|
|
2
|
+
import type { RiskAssessment } from '../risk/explainer';
|
|
3
|
+
export declare class RegistryAPI {
|
|
4
|
+
private registry;
|
|
5
|
+
private riskExplainer;
|
|
6
|
+
constructor(storagePath?: string);
|
|
7
|
+
initialize(): Promise<void>;
|
|
8
|
+
publishMacro(id: string, version: string, description: string, requires: Capability[], author: string, options?: MacroPublishOptions): Promise<MacroManifest>;
|
|
9
|
+
getMacro(id: string, version?: string): Promise<MacroManifest | null>;
|
|
10
|
+
listMacros(filters?: {
|
|
11
|
+
state?: 'draft' | 'approved' | 'deprecated';
|
|
12
|
+
author?: string;
|
|
13
|
+
tags?: string[];
|
|
14
|
+
}): Promise<MacroManifest[]>;
|
|
15
|
+
approveMacro(id: string, version: string, approvedBy: string): Promise<MacroManifest>;
|
|
16
|
+
deprecateMacro(id: string, version?: string): Promise<MacroManifest>;
|
|
17
|
+
assessMacroRisk(id: string, version?: string): Promise<RiskAssessment | null>;
|
|
18
|
+
compareMacroVersions(id: string, oldVersion: string, newVersion: string): Promise<import("../registry/manifest").MacroDiffResult>;
|
|
19
|
+
getMacroVersions(id: string): Promise<MacroManifest[]>;
|
|
20
|
+
explainCapability(capability: Capability): Promise<string>;
|
|
21
|
+
expandCapabilities(capabilities: Capability[]): Promise<Capability[]>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RegistryAPI = void 0;
|
|
4
|
+
const registry_1 = require("../registry/registry");
|
|
5
|
+
const explainer_1 = require("../risk/explainer");
|
|
6
|
+
class RegistryAPI {
|
|
7
|
+
registry;
|
|
8
|
+
riskExplainer;
|
|
9
|
+
constructor(storagePath) {
|
|
10
|
+
this.registry = new registry_1.MacroRegistry({ storagePath });
|
|
11
|
+
this.riskExplainer = new explainer_1.RiskExplainer((0, explainer_1.createCapabilityGraph)());
|
|
12
|
+
}
|
|
13
|
+
async initialize() {
|
|
14
|
+
await this.registry.initialize();
|
|
15
|
+
}
|
|
16
|
+
async publishMacro(id, version, description, requires, author, options = {}) {
|
|
17
|
+
const manifest = {
|
|
18
|
+
id,
|
|
19
|
+
version,
|
|
20
|
+
description,
|
|
21
|
+
author,
|
|
22
|
+
createdAt: Date.now(),
|
|
23
|
+
state: 'draft',
|
|
24
|
+
requires
|
|
25
|
+
};
|
|
26
|
+
return await this.registry.publish(manifest, options);
|
|
27
|
+
}
|
|
28
|
+
async getMacro(id, version) {
|
|
29
|
+
return await this.registry.get(id, version);
|
|
30
|
+
}
|
|
31
|
+
async listMacros(filters) {
|
|
32
|
+
return await this.registry.list(filters);
|
|
33
|
+
}
|
|
34
|
+
async approveMacro(id, version, approvedBy) {
|
|
35
|
+
return await this.registry.approve(id, version, approvedBy);
|
|
36
|
+
}
|
|
37
|
+
async deprecateMacro(id, version) {
|
|
38
|
+
return await this.registry.deprecate(id, version);
|
|
39
|
+
}
|
|
40
|
+
async assessMacroRisk(id, version) {
|
|
41
|
+
const manifest = await this.registry.get(id, version);
|
|
42
|
+
if (!manifest) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return this.riskExplainer.explainRisk(manifest);
|
|
46
|
+
}
|
|
47
|
+
async compareMacroVersions(id, oldVersion, newVersion) {
|
|
48
|
+
const oldManifest = await this.registry.get(id, oldVersion);
|
|
49
|
+
const newManifest = await this.registry.get(id, newVersion);
|
|
50
|
+
if (!oldManifest || !newManifest) {
|
|
51
|
+
throw new Error('One or both versions not found');
|
|
52
|
+
}
|
|
53
|
+
return this.registry.compareCapabilities(oldManifest, newManifest);
|
|
54
|
+
}
|
|
55
|
+
async getMacroVersions(id) {
|
|
56
|
+
return await this.registry.getVersions(id);
|
|
57
|
+
}
|
|
58
|
+
async explainCapability(capability) {
|
|
59
|
+
return this.riskExplainer.explainCapability(capability);
|
|
60
|
+
}
|
|
61
|
+
async expandCapabilities(capabilities) {
|
|
62
|
+
return this.riskExplainer.expandCapabilities(capabilities);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.RegistryAPI = RegistryAPI;
|
|
66
|
+
//# sourceMappingURL=registryAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registryAPI.js","sourceRoot":"","sources":["../../src/api/registryAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './timeline';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./timeline"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/audit/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { ExecutionTurn } from '../agent/state';
|
|
2
|
+
export type AuditEventType = 'macro_started' | 'macro_finished' | 'state_transition' | 'capability_requested' | 'capability_granted' | 'capability_denied' | 'human_approval_requested' | 'human_approved' | 'human_rejected' | 'tool_executed' | 'error_occurred';
|
|
3
|
+
export interface AuditEvent {
|
|
4
|
+
id: string;
|
|
5
|
+
timestamp: number;
|
|
6
|
+
executionId: string;
|
|
7
|
+
type: AuditEventType;
|
|
8
|
+
data: {
|
|
9
|
+
macroId?: string;
|
|
10
|
+
macroVersion?: string;
|
|
11
|
+
turnId?: number;
|
|
12
|
+
fromState?: string;
|
|
13
|
+
toState?: string;
|
|
14
|
+
capability?: string;
|
|
15
|
+
reason?: string;
|
|
16
|
+
toolName?: string;
|
|
17
|
+
toolParams?: any;
|
|
18
|
+
success?: boolean;
|
|
19
|
+
error?: string;
|
|
20
|
+
approver?: string;
|
|
21
|
+
duration?: number;
|
|
22
|
+
};
|
|
23
|
+
metadata?: Record<string, any>;
|
|
24
|
+
}
|
|
25
|
+
export interface ExecutionTimeline {
|
|
26
|
+
executionId: string;
|
|
27
|
+
startTime: number;
|
|
28
|
+
endTime?: number;
|
|
29
|
+
events: AuditEvent[];
|
|
30
|
+
summary: ExecutionSummary;
|
|
31
|
+
}
|
|
32
|
+
export interface ExecutionSummary {
|
|
33
|
+
totalDuration?: number;
|
|
34
|
+
totalTurns: number;
|
|
35
|
+
successfulTurns: number;
|
|
36
|
+
failedTurns: number;
|
|
37
|
+
capabilitiesRequested: Set<string>;
|
|
38
|
+
capabilitiesGranted: Set<string>;
|
|
39
|
+
capabilitiesDenied: Set<string>;
|
|
40
|
+
toolsUsed: Map<string, number>;
|
|
41
|
+
errors: Array<{
|
|
42
|
+
turn: number;
|
|
43
|
+
message: string;
|
|
44
|
+
}>;
|
|
45
|
+
humanApprovals: number;
|
|
46
|
+
humanRejections: number;
|
|
47
|
+
}
|
|
48
|
+
export interface EffectsSummary {
|
|
49
|
+
filesRead: string[];
|
|
50
|
+
filesWritten: string[];
|
|
51
|
+
filesModified: string[];
|
|
52
|
+
commandsExecuted: Array<{
|
|
53
|
+
command: string;
|
|
54
|
+
success: boolean;
|
|
55
|
+
}>;
|
|
56
|
+
networkRequests: Array<{
|
|
57
|
+
url: string;
|
|
58
|
+
method?: string;
|
|
59
|
+
}>;
|
|
60
|
+
secretsAccessed: string[];
|
|
61
|
+
}
|
|
62
|
+
export declare class AuditTimeline {
|
|
63
|
+
private events;
|
|
64
|
+
private executionId;
|
|
65
|
+
private startTime;
|
|
66
|
+
constructor(executionId: string);
|
|
67
|
+
record(event: Omit<AuditEvent, 'id' | 'timestamp' | 'executionId'>): void;
|
|
68
|
+
recordTurn(turn: ExecutionTurn): void;
|
|
69
|
+
generateTimeline(): ExecutionTimeline;
|
|
70
|
+
generateEffectsSummary(turns: ExecutionTurn[]): EffectsSummary;
|
|
71
|
+
toJSON(): string;
|
|
72
|
+
toMarkdown(): string;
|
|
73
|
+
private generateSummary;
|
|
74
|
+
private generateEventId;
|
|
75
|
+
}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuditTimeline = void 0;
|
|
4
|
+
class AuditTimeline {
|
|
5
|
+
events = [];
|
|
6
|
+
executionId;
|
|
7
|
+
startTime;
|
|
8
|
+
constructor(executionId) {
|
|
9
|
+
this.executionId = executionId;
|
|
10
|
+
this.startTime = Date.now();
|
|
11
|
+
}
|
|
12
|
+
record(event) {
|
|
13
|
+
this.events.push({
|
|
14
|
+
id: this.generateEventId(),
|
|
15
|
+
timestamp: Date.now(),
|
|
16
|
+
executionId: this.executionId,
|
|
17
|
+
...event
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
recordTurn(turn) {
|
|
21
|
+
const startTime = Date.now();
|
|
22
|
+
this.record({
|
|
23
|
+
type: 'macro_started',
|
|
24
|
+
data: {
|
|
25
|
+
turnId: turn.turnId
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
if (turn.proposedAction) {
|
|
29
|
+
this.record({
|
|
30
|
+
type: 'capability_requested',
|
|
31
|
+
data: {
|
|
32
|
+
capability: turn.proposedAction.type
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (turn.governance) {
|
|
37
|
+
if (turn.governance.status === 'approved' && turn.governance.by === 'human') {
|
|
38
|
+
this.record({
|
|
39
|
+
type: 'human_approval_requested',
|
|
40
|
+
data: {
|
|
41
|
+
approver: turn.governance.by
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
this.record({
|
|
45
|
+
type: 'human_approved',
|
|
46
|
+
data: {
|
|
47
|
+
approver: turn.governance.by
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else if (turn.governance.status === 'rejected') {
|
|
52
|
+
this.record({
|
|
53
|
+
type: 'human_approval_requested',
|
|
54
|
+
data: {}
|
|
55
|
+
});
|
|
56
|
+
this.record({
|
|
57
|
+
type: 'human_rejected',
|
|
58
|
+
data: {
|
|
59
|
+
reason: turn.governance.reason
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (turn.executionResult) {
|
|
65
|
+
if (turn.proposedAction?.type === 'tool_call') {
|
|
66
|
+
this.record({
|
|
67
|
+
type: 'tool_executed',
|
|
68
|
+
data: {
|
|
69
|
+
toolName: turn.proposedAction.payload?.tool_name,
|
|
70
|
+
toolParams: turn.proposedAction.payload?.parameters,
|
|
71
|
+
success: turn.executionResult.success
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (!turn.executionResult.success) {
|
|
76
|
+
this.record({
|
|
77
|
+
type: 'error_occurred',
|
|
78
|
+
data: {
|
|
79
|
+
error: turn.executionResult.error
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const duration = Date.now() - startTime;
|
|
85
|
+
this.record({
|
|
86
|
+
type: 'macro_finished',
|
|
87
|
+
data: {
|
|
88
|
+
duration
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
generateTimeline() {
|
|
93
|
+
const summary = this.generateSummary();
|
|
94
|
+
return {
|
|
95
|
+
executionId: this.executionId,
|
|
96
|
+
startTime: this.startTime,
|
|
97
|
+
endTime: this.events.length > 0 ? this.events[this.events.length - 1].timestamp : undefined,
|
|
98
|
+
events: this.events,
|
|
99
|
+
summary
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
generateEffectsSummary(turns) {
|
|
103
|
+
const effects = {
|
|
104
|
+
filesRead: [],
|
|
105
|
+
filesWritten: [],
|
|
106
|
+
filesModified: [],
|
|
107
|
+
commandsExecuted: [],
|
|
108
|
+
networkRequests: [],
|
|
109
|
+
secretsAccessed: []
|
|
110
|
+
};
|
|
111
|
+
for (const turn of turns) {
|
|
112
|
+
if (turn.proposedAction?.type === 'tool_call') {
|
|
113
|
+
const toolName = turn.proposedAction.payload?.tool_name;
|
|
114
|
+
const params = turn.proposedAction.payload?.parameters;
|
|
115
|
+
switch (toolName) {
|
|
116
|
+
case 'read_file':
|
|
117
|
+
if (params?.path && turn.executionResult?.success) {
|
|
118
|
+
effects.filesRead.push(params.path);
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
121
|
+
case 'write_file':
|
|
122
|
+
if (params?.path && turn.executionResult?.success) {
|
|
123
|
+
effects.filesWritten.push(params.path);
|
|
124
|
+
}
|
|
125
|
+
break;
|
|
126
|
+
case 'list_files':
|
|
127
|
+
if (params?.path && turn.executionResult?.success) {
|
|
128
|
+
effects.filesModified.push(params.path);
|
|
129
|
+
}
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (turn.proposedAction?.type === 'shell_cmd' && turn.executionResult) {
|
|
134
|
+
effects.commandsExecuted.push({
|
|
135
|
+
command: turn.proposedAction.payload?.command,
|
|
136
|
+
success: turn.executionResult.success
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return effects;
|
|
141
|
+
}
|
|
142
|
+
toJSON() {
|
|
143
|
+
return JSON.stringify(this.generateTimeline(), null, 2);
|
|
144
|
+
}
|
|
145
|
+
toMarkdown() {
|
|
146
|
+
const timeline = this.generateTimeline();
|
|
147
|
+
let markdown = `# Execution Timeline\n\n`;
|
|
148
|
+
markdown += `**Execution ID:** ${timeline.executionId}\n`;
|
|
149
|
+
markdown += `**Start Time:** ${new Date(timeline.startTime).toISOString()}\n`;
|
|
150
|
+
if (timeline.endTime) {
|
|
151
|
+
markdown += `**End Time:** ${new Date(timeline.endTime).toISOString()}\n`;
|
|
152
|
+
markdown += `**Duration:** ${((timeline.endTime - timeline.startTime) / 1000).toFixed(2)}s\n`;
|
|
153
|
+
}
|
|
154
|
+
markdown += `\n`;
|
|
155
|
+
markdown += `## Summary\n\n`;
|
|
156
|
+
markdown += `- Total Turns: ${timeline.summary.totalTurns}\n`;
|
|
157
|
+
markdown += `- Successful: ${timeline.summary.successfulTurns}\n`;
|
|
158
|
+
markdown += `- Failed: ${timeline.summary.failedTurns}\n`;
|
|
159
|
+
markdown += `- Human Approvals: ${timeline.summary.humanApprovals}\n`;
|
|
160
|
+
markdown += `- Human Rejections: ${timeline.summary.humanRejections}\n`;
|
|
161
|
+
markdown += `\n`;
|
|
162
|
+
markdown += `## Events\n\n`;
|
|
163
|
+
for (const event of timeline.events) {
|
|
164
|
+
markdown += `### ${event.type}\n`;
|
|
165
|
+
markdown += `- **Time:** ${new Date(event.timestamp).toISOString()}\n`;
|
|
166
|
+
if (event.data.capability) {
|
|
167
|
+
markdown += `- **Capability:** ${event.data.capability}\n`;
|
|
168
|
+
}
|
|
169
|
+
if (event.data.toolName) {
|
|
170
|
+
markdown += `- **Tool:** ${event.data.toolName}\n`;
|
|
171
|
+
}
|
|
172
|
+
if (event.data.reason) {
|
|
173
|
+
markdown += `- **Reason:** ${event.data.reason}\n`;
|
|
174
|
+
}
|
|
175
|
+
if (event.data.error) {
|
|
176
|
+
markdown += `- **Error:** ${event.data.error}\n`;
|
|
177
|
+
}
|
|
178
|
+
markdown += `\n`;
|
|
179
|
+
}
|
|
180
|
+
return markdown;
|
|
181
|
+
}
|
|
182
|
+
generateSummary() {
|
|
183
|
+
const capabilitiesRequested = new Set();
|
|
184
|
+
const capabilitiesGranted = new Set();
|
|
185
|
+
const capabilitiesDenied = new Set();
|
|
186
|
+
const toolsUsed = new Map();
|
|
187
|
+
const errors = [];
|
|
188
|
+
let humanApprovals = 0;
|
|
189
|
+
let humanRejections = 0;
|
|
190
|
+
let successfulTurns = 0;
|
|
191
|
+
let failedTurns = 0;
|
|
192
|
+
for (const event of this.events) {
|
|
193
|
+
switch (event.type) {
|
|
194
|
+
case 'capability_requested':
|
|
195
|
+
if (event.data.capability) {
|
|
196
|
+
capabilitiesRequested.add(event.data.capability);
|
|
197
|
+
}
|
|
198
|
+
break;
|
|
199
|
+
case 'capability_granted':
|
|
200
|
+
if (event.data.capability) {
|
|
201
|
+
capabilitiesGranted.add(event.data.capability);
|
|
202
|
+
}
|
|
203
|
+
break;
|
|
204
|
+
case 'capability_denied':
|
|
205
|
+
if (event.data.capability) {
|
|
206
|
+
capabilitiesDenied.add(event.data.capability);
|
|
207
|
+
}
|
|
208
|
+
break;
|
|
209
|
+
case 'tool_executed':
|
|
210
|
+
if (event.data.toolName) {
|
|
211
|
+
const count = toolsUsed.get(event.data.toolName) || 0;
|
|
212
|
+
toolsUsed.set(event.data.toolName, count + 1);
|
|
213
|
+
}
|
|
214
|
+
break;
|
|
215
|
+
case 'human_approved':
|
|
216
|
+
humanApprovals++;
|
|
217
|
+
successfulTurns++;
|
|
218
|
+
break;
|
|
219
|
+
case 'human_rejected':
|
|
220
|
+
humanRejections++;
|
|
221
|
+
failedTurns++;
|
|
222
|
+
break;
|
|
223
|
+
case 'error_occurred':
|
|
224
|
+
if (event.data.error) {
|
|
225
|
+
errors.push({
|
|
226
|
+
turn: event.data.turnId || 0,
|
|
227
|
+
message: event.data.error
|
|
228
|
+
});
|
|
229
|
+
failedTurns++;
|
|
230
|
+
}
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
const endTime = this.events.length > 0 ? this.events[this.events.length - 1].timestamp : Date.now();
|
|
235
|
+
return {
|
|
236
|
+
totalDuration: endTime - this.startTime,
|
|
237
|
+
totalTurns: successfulTurns + failedTurns,
|
|
238
|
+
successfulTurns,
|
|
239
|
+
failedTurns,
|
|
240
|
+
capabilitiesRequested,
|
|
241
|
+
capabilitiesGranted,
|
|
242
|
+
capabilitiesDenied,
|
|
243
|
+
toolsUsed,
|
|
244
|
+
errors,
|
|
245
|
+
humanApprovals,
|
|
246
|
+
humanRejections
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
generateEventId() {
|
|
250
|
+
return `event_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
exports.AuditTimeline = AuditTimeline;
|
|
254
|
+
//# sourceMappingURL=timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/audit/timeline.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -51,6 +51,10 @@ const apps_1 = require("./core/apps");
|
|
|
51
51
|
const macros_1 = require("./core/macros");
|
|
52
52
|
const history_1 = require("./utils/history");
|
|
53
53
|
const syntaxHandler_1 = require("./utils/syntaxHandler");
|
|
54
|
+
const registryCommands_1 = require("./commands/registryCommands");
|
|
55
|
+
const explainCommands_1 = require("./commands/explainCommands");
|
|
56
|
+
const replayCommands_1 = require("./commands/replayCommands");
|
|
57
|
+
const skillsCommands_1 = require("./commands/skillsCommands");
|
|
54
58
|
// Mandatory Node.js version check
|
|
55
59
|
const majorVersion = Number(process.versions.node.split('.')[0]);
|
|
56
60
|
if (majorVersion < 18) {
|
|
@@ -366,6 +370,10 @@ program
|
|
|
366
370
|
}
|
|
367
371
|
});
|
|
368
372
|
(0, capabilityCommands_1.registerCapabilityCommands)(program);
|
|
373
|
+
(0, registryCommands_1.registerRegistryCommands)(program);
|
|
374
|
+
(0, explainCommands_1.registerExplainCommands)(program);
|
|
375
|
+
(0, replayCommands_1.registerReplayCommands)(program);
|
|
376
|
+
(0, skillsCommands_1.registerSkillsCommands)(program);
|
|
369
377
|
program
|
|
370
378
|
.command('help')
|
|
371
379
|
.description('显示帮助信息')
|
|
@@ -382,6 +390,7 @@ program
|
|
|
382
390
|
console.log(` ${chalk_1.default.green('macros')} 查看所有快捷指令`);
|
|
383
391
|
console.log(` ${chalk_1.default.green('save')} <名称> 保存快捷指令`);
|
|
384
392
|
console.log(` ${chalk_1.default.green('run')} <名称> 执行快捷指令`);
|
|
393
|
+
console.log(` ${chalk_1.default.green('registry')} Macro Registry 管理`);
|
|
385
394
|
console.log(` ${chalk_1.default.green('help')} 显示帮助信息\n`);
|
|
386
395
|
});
|
|
387
396
|
const apps = (0, apps_1.loadAppsConfig)();
|
|
@@ -421,7 +430,7 @@ program
|
|
|
421
430
|
});
|
|
422
431
|
async function main() {
|
|
423
432
|
const args = process.argv.slice(2);
|
|
424
|
-
const knownCommands = ['ai', 'list', 'history', 'config', 'macros', 'save', 'run', 'help', 'shici', 'dict', 'pong', 'capabilities', 'completion', '_complete_subcommand', '_describe'];
|
|
433
|
+
const knownCommands = ['ai', 'list', 'history', 'config', 'macros', 'save', 'run', 'help', 'shici', 'dict', 'pong', 'capabilities', 'completion', '_complete_subcommand', '_describe', 'registry', 'explain', 'replay', 'skills'];
|
|
425
434
|
const globalFlags = ['-h', '--help', '-V', '--version', '-v'];
|
|
426
435
|
const firstArg = args[0];
|
|
427
436
|
const isKnownCommand = firstArg && knownCommands.includes(firstArg);
|