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.
Files changed (114) hide show
  1. package/README.md +290 -0
  2. package/dist/agent/contextManager.d.ts +30 -0
  3. package/dist/agent/contextManager.js +65 -0
  4. package/dist/agent/contextManager.js.map +1 -0
  5. package/dist/agent/executor.d.ts +11 -0
  6. package/dist/agent/executor.js +191 -0
  7. package/dist/agent/executor.js.map +1 -0
  8. package/dist/agent/fsm.d.ts +23 -0
  9. package/dist/agent/fsm.js +95 -0
  10. package/dist/agent/fsm.js.map +1 -0
  11. package/dist/agent/governance.d.ts +10 -0
  12. package/dist/agent/governance.js +154 -0
  13. package/dist/agent/governance.js.map +1 -0
  14. package/dist/agent/index.d.ts +9 -0
  15. package/dist/agent/index.js +16 -1
  16. package/dist/agent/index.js.map +1 -1
  17. package/dist/agent/llmAdapter.d.ts +6 -0
  18. package/dist/agent/llmAdapter.js +88 -0
  19. package/dist/agent/llmAdapter.js.map +1 -0
  20. package/dist/agent/loop.d.ts +21 -0
  21. package/dist/agent/loop.js +214 -0
  22. package/dist/agent/loop.js.map +1 -0
  23. package/dist/agent/policy/engine.d.ts +14 -0
  24. package/dist/agent/policy/engine.js +76 -0
  25. package/dist/agent/policy/engine.js.map +1 -0
  26. package/dist/agent/policy/index.d.ts +3 -0
  27. package/dist/agent/policy/index.js +20 -0
  28. package/dist/agent/policy/index.js.map +1 -0
  29. package/dist/agent/policy/policies/noDangerousShell.d.ts +7 -0
  30. package/dist/agent/policy/policies/noDangerousShell.js +45 -0
  31. package/dist/agent/policy/policies/noDangerousShell.js.map +1 -0
  32. package/dist/agent/policy/types.d.ts +23 -0
  33. package/dist/agent/policy/types.js +3 -0
  34. package/dist/agent/policy/types.js.map +1 -0
  35. package/dist/agent/replay/events.d.ts +21 -0
  36. package/dist/agent/replay/events.js +3 -0
  37. package/dist/agent/replay/events.js.map +1 -0
  38. package/dist/agent/replay/index.d.ts +3 -0
  39. package/dist/agent/replay/index.js +20 -0
  40. package/dist/agent/replay/index.js.map +1 -0
  41. package/dist/agent/replay/recorder.d.ts +11 -0
  42. package/dist/agent/replay/recorder.js +51 -0
  43. package/dist/agent/replay/recorder.js.map +1 -0
  44. package/dist/agent/replay/replayer.d.ts +21 -0
  45. package/dist/agent/replay/replayer.js +65 -0
  46. package/dist/agent/replay/replayer.js.map +1 -0
  47. package/dist/agent/selectModel.js +4 -11
  48. package/dist/agent/selectModel.js.map +1 -1
  49. package/dist/agent/skills.d.ts +5 -0
  50. package/dist/agent/skills.js +7 -3
  51. package/dist/agent/skills.js.map +1 -1
  52. package/dist/agent/state.d.ts +99 -0
  53. package/dist/agent/state.js +3 -0
  54. package/dist/agent/state.js.map +1 -0
  55. package/dist/api/index.d.ts +1 -0
  56. package/dist/api/index.js +18 -0
  57. package/dist/api/index.js.map +1 -0
  58. package/dist/api/registryAPI.d.ts +22 -0
  59. package/dist/api/registryAPI.js +66 -0
  60. package/dist/api/registryAPI.js.map +1 -0
  61. package/dist/audit/index.d.ts +1 -0
  62. package/dist/audit/index.js +18 -0
  63. package/dist/audit/index.js.map +1 -0
  64. package/dist/audit/timeline.d.ts +75 -0
  65. package/dist/audit/timeline.js +254 -0
  66. package/dist/audit/timeline.js.map +1 -0
  67. package/dist/cli.js +10 -1
  68. package/dist/cli.js.map +1 -1
  69. package/dist/commands/explainCommands.d.ts +2 -0
  70. package/dist/commands/explainCommands.js +36 -0
  71. package/dist/commands/explainCommands.js.map +1 -0
  72. package/dist/commands/registryCommands.d.ts +2 -0
  73. package/dist/commands/registryCommands.js +243 -0
  74. package/dist/commands/registryCommands.js.map +1 -0
  75. package/dist/commands/replayCommands.d.ts +2 -0
  76. package/dist/commands/replayCommands.js +75 -0
  77. package/dist/commands/replayCommands.js.map +1 -0
  78. package/dist/commands/skillsCommands.d.ts +2 -0
  79. package/dist/commands/skillsCommands.js +114 -0
  80. package/dist/commands/skillsCommands.js.map +1 -0
  81. package/dist/core/executionRecord.d.ts +8 -0
  82. package/dist/core/executionRecord.js +2 -0
  83. package/dist/core/executionRecord.js.map +1 -1
  84. package/dist/core/explain.d.ts +8 -0
  85. package/dist/core/explain.js +84 -0
  86. package/dist/core/explain.js.map +1 -0
  87. package/dist/core/replayDiff.d.ts +55 -0
  88. package/dist/core/replayDiff.js +205 -0
  89. package/dist/core/replayDiff.js.map +1 -0
  90. package/dist/core/replayEngine.d.ts +3 -0
  91. package/dist/core/replayEngine.js +23 -1
  92. package/dist/core/replayEngine.js.map +1 -1
  93. package/dist/core/validation.d.ts +1 -1
  94. package/dist/core/validation.js +1 -1
  95. package/dist/core/validation.js.map +1 -1
  96. package/dist/registry/errors.d.ts +21 -0
  97. package/dist/registry/errors.js +35 -0
  98. package/dist/registry/errors.js.map +1 -0
  99. package/dist/registry/index.d.ts +3 -0
  100. package/dist/registry/index.js +20 -0
  101. package/dist/registry/index.js.map +1 -0
  102. package/dist/registry/manifest.d.ts +43 -0
  103. package/dist/registry/manifest.js +32 -0
  104. package/dist/registry/manifest.js.map +1 -0
  105. package/dist/registry/registry.d.ts +20 -0
  106. package/dist/registry/registry.js +201 -0
  107. package/dist/registry/registry.js.map +1 -0
  108. package/dist/risk/explainer.d.ts +39 -0
  109. package/dist/risk/explainer.js +214 -0
  110. package/dist/risk/explainer.js.map +1 -0
  111. package/dist/risk/index.d.ts +1 -0
  112. package/dist/risk/index.js +18 -0
  113. package/dist/risk/index.js.map +1 -0
  114. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=state.js.map
@@ -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);