@alan512/experienceengine 0.4.0 → 0.4.1

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 (70) hide show
  1. package/README.md +8 -2
  2. package/README.zh-CN.md +8 -2
  3. package/dist/adapters/antigravity/artifact-analyzer.d.ts +27 -0
  4. package/dist/adapters/antigravity/artifact-analyzer.js +151 -0
  5. package/dist/adapters/antigravity/artifact-analyzer.js.map +1 -0
  6. package/dist/adapters/codex/behavior-loop.d.ts +15 -43
  7. package/dist/adapters/codex/behavior-loop.js +2 -215
  8. package/dist/adapters/codex/behavior-loop.js.map +1 -1
  9. package/dist/adapters/codex/mcp-server.d.ts +37 -44
  10. package/dist/adapters/codex/mcp-server.js +5 -427
  11. package/dist/adapters/codex/mcp-server.js.map +1 -1
  12. package/dist/adapters/shared-mcp/action-registry.d.ts +121 -0
  13. package/dist/adapters/shared-mcp/action-registry.js +435 -0
  14. package/dist/adapters/shared-mcp/action-registry.js.map +1 -0
  15. package/dist/adapters/shared-mcp/behavior-loop.d.ts +91 -0
  16. package/dist/adapters/shared-mcp/behavior-loop.js +218 -0
  17. package/dist/adapters/shared-mcp/behavior-loop.js.map +1 -0
  18. package/dist/adapters/shared-mcp/server.d.ts +113 -0
  19. package/dist/adapters/shared-mcp/server.js +423 -0
  20. package/dist/adapters/shared-mcp/server.js.map +1 -0
  21. package/dist/cli/commands/agy-exec.d.ts +23 -0
  22. package/dist/cli/commands/agy-exec.js +92 -0
  23. package/dist/cli/commands/agy-exec.js.map +1 -0
  24. package/dist/cli/commands/antigravity-hook.d.ts +58 -0
  25. package/dist/cli/commands/antigravity-hook.js +192 -0
  26. package/dist/cli/commands/antigravity-hook.js.map +1 -0
  27. package/dist/cli/commands/antigravity.d.ts +8 -0
  28. package/dist/cli/commands/antigravity.js +37 -0
  29. package/dist/cli/commands/antigravity.js.map +1 -0
  30. package/dist/cli/commands/doctor.d.ts +2 -0
  31. package/dist/cli/commands/doctor.js +104 -3
  32. package/dist/cli/commands/doctor.js.map +1 -1
  33. package/dist/cli/commands/install.d.ts +3 -1
  34. package/dist/cli/commands/install.js +32 -2
  35. package/dist/cli/commands/install.js.map +1 -1
  36. package/dist/cli/commands/mcp-server.js +10 -2
  37. package/dist/cli/commands/mcp-server.js.map +1 -1
  38. package/dist/cli/commands/repair.d.ts +1 -1
  39. package/dist/cli/commands/repair.js +21 -3
  40. package/dist/cli/commands/repair.js.map +1 -1
  41. package/dist/cli/commands/upgrade.d.ts +4 -1
  42. package/dist/cli/commands/upgrade.js +25 -2
  43. package/dist/cli/commands/upgrade.js.map +1 -1
  44. package/dist/cli/dispatch.js +22 -6
  45. package/dist/cli/dispatch.js.map +1 -1
  46. package/dist/install/antigravity-global-wiring.d.ts +25 -0
  47. package/dist/install/antigravity-global-wiring.js +165 -0
  48. package/dist/install/antigravity-global-wiring.js.map +1 -0
  49. package/dist/install/antigravity-project-wiring.d.ts +24 -0
  50. package/dist/install/antigravity-project-wiring.js +380 -0
  51. package/dist/install/antigravity-project-wiring.js.map +1 -0
  52. package/dist/install/antigravity.d.ts +78 -0
  53. package/dist/install/antigravity.js +169 -0
  54. package/dist/install/antigravity.js.map +1 -0
  55. package/dist/install/host-detection.d.ts +1 -1
  56. package/dist/install/host-detection.js +2 -1
  57. package/dist/install/host-detection.js.map +1 -1
  58. package/dist/install/public-install.d.ts +2 -0
  59. package/dist/install/public-install.js +8 -0
  60. package/dist/install/public-install.js.map +1 -1
  61. package/dist/interaction/operational-actions-service.d.ts +8 -5
  62. package/dist/interaction/operational-actions-service.js +36 -6
  63. package/dist/interaction/operational-actions-service.js.map +1 -1
  64. package/dist/interaction/operational-service.d.ts +3 -1
  65. package/dist/interaction/operational-service.js +9 -0
  66. package/dist/interaction/operational-service.js.map +1 -1
  67. package/dist/types/domain.d.ts +1 -1
  68. package/docs/releases/v0.4.1.md +22 -0
  69. package/docs/user-guide.md +78 -3
  70. package/package.json +68 -68
@@ -0,0 +1,218 @@
1
+ import { loadConfig } from "../../config/load-config.js";
2
+ import { resolveExperienceEnginePaths } from "../../config/path-resolver.js";
3
+ import { buildRetrievalPolicyInspectionSummary } from "../../interaction/retrieval-policy-inspection.js";
4
+ import { ExperiencePromptRuntimeService } from "../../runtime/prompt-service.js";
5
+ const createSharedConfig = (adapter, options = {}) => {
6
+ const paths = resolveExperienceEnginePaths({
7
+ adapter,
8
+ env: options.env ?? process.env,
9
+ homeDir: options.homeDir
10
+ });
11
+ return loadConfig({
12
+ dataDir: paths.dataDir,
13
+ sqlitePath: paths.sqlitePath,
14
+ captureDir: paths.captureDir
15
+ }, {
16
+ env: options.env ?? process.env,
17
+ homeDir: options.homeDir
18
+ });
19
+ };
20
+ const createSharedPromptRuntime = (adapter, options = {}) => new ExperiencePromptRuntimeService(createSharedConfig(adapter, options));
21
+ const createSharedRuntime = async (adapter, options = {}) => {
22
+ const { ExperienceRuntimeService } = await import("../../runtime/service.js");
23
+ return new ExperienceRuntimeService(createSharedConfig(adapter, options), undefined, {
24
+ ...options.runtimeOptions,
25
+ autonomousHygieneGovernance: {
26
+ enabled: true,
27
+ ...options.runtimeOptions?.autonomousHygieneGovernance
28
+ }
29
+ });
30
+ };
31
+ const summarizeActionReason = (scorecard) => {
32
+ if (scorecard.mode === "inject_conservative") {
33
+ if (scorecard.decisionReason === "ambiguous_same_family_candidate") {
34
+ return "ExperienceEngine found a promising same-family match and chose conservative injection instead of skipping.";
35
+ }
36
+ if (scorecard.decisionReason === "promising_candidate_quality") {
37
+ return "ExperienceEngine found a credible candidate, but kept the injection conservative until it has stronger runtime proof.";
38
+ }
39
+ return "ExperienceEngine chose conservative injection because the best match still needs more runtime evidence.";
40
+ }
41
+ if (scorecard.decisionReason === "mature_validated_candidate") {
42
+ return "A mature validated candidate cleared the fast path, so ExperienceEngine injected it normally.";
43
+ }
44
+ if (scorecard.decisionReason === "candidate_quality_positive") {
45
+ return "Candidate quality was strong enough to justify intervention for this task.";
46
+ }
47
+ if (scorecard.mode === "inject") {
48
+ return "ExperienceEngine injected the best available reusable guidance for this task.";
49
+ }
50
+ return undefined;
51
+ };
52
+ const summarizeTrust = (scorecard) => {
53
+ const primaryNode = scorecard.nodes?.[0];
54
+ if (!scorecard.riskLevel || !primaryNode?.state) {
55
+ return undefined;
56
+ }
57
+ const confidence = scorecard.confidence ? ` ${scorecard.confidence}-confidence` : "";
58
+ return `${scorecard.riskLevel}-risk${confidence} ${primaryNode.state} guidance with ${primaryNode.helped ?? 0} helped and ${primaryNode.harmed ?? 0} harmed signal(s).`;
59
+ };
60
+ const summarizeRetrievalNotes = (scorecard) => {
61
+ const notes = [];
62
+ if (scorecard.queryRewriteApplied) {
63
+ notes.push("Query rewrite preserved retrieval intent for this task.");
64
+ }
65
+ const rerankSource = scorecard.topCandidates?.[0]?.rerankSource;
66
+ if (rerankSource === "model") {
67
+ notes.push("Model reranking participated in the final ordering.");
68
+ }
69
+ if (scorecard.fastPathApplied) {
70
+ notes.push("A strong candidate fast path was used.");
71
+ }
72
+ const topCandidate = scorecard.topCandidates?.[0];
73
+ if (topCandidate?.retrievalReasons?.length) {
74
+ notes.push(`Top retrieval signals: ${topCandidate.retrievalReasons.slice(0, 2).join(", ")}.`);
75
+ }
76
+ if (topCandidate?.policyReasons?.length) {
77
+ notes.push(`Top policy signals: ${topCandidate.policyReasons.slice(0, 2).join(", ")}.`);
78
+ }
79
+ if (scorecard.rejectedCandidates?.length) {
80
+ notes.push(`Runner-up candidates withheld: ${scorecard.rejectedCandidates.map((candidate) => candidate.id).join(", ")}.`);
81
+ }
82
+ return notes;
83
+ };
84
+ const summarizeScorecard = (scorecard) => scorecard
85
+ ? {
86
+ mode: scorecard.mode,
87
+ interventionStrength: scorecard.interventionStrength,
88
+ riskLevel: scorecard.riskLevel,
89
+ recommendation: scorecard.recommendation,
90
+ actionReason: summarizeActionReason(scorecard),
91
+ trustSummary: summarizeTrust(scorecard),
92
+ retrievalNotes: summarizeRetrievalNotes(scorecard),
93
+ retrievalPolicySummary: buildRetrievalPolicyInspectionSummary(scorecard),
94
+ confidence: scorecard.confidence,
95
+ budgetClass: scorecard.budgetClass,
96
+ selectedCandidateIds: scorecard.selectedCandidateIds,
97
+ rejectedCandidates: scorecard.rejectedCandidates?.slice(0, 3).map((candidate) => ({
98
+ id: candidate.id,
99
+ reasonCodes: candidate.reasonCodes
100
+ })) ?? [],
101
+ reasons: scorecard.reasons?.slice(0, 2),
102
+ nodes: scorecard.nodes?.slice(0, 3).map((node) => ({
103
+ id: node.id,
104
+ state: node.state,
105
+ riskLevel: node.riskLevel,
106
+ helped: node.helped,
107
+ harmed: node.harmed
108
+ })) ?? []
109
+ }
110
+ : undefined;
111
+ export const createSharedBehaviorLoop = (adapter, options = {}) => {
112
+ let promptRuntime;
113
+ let runtime;
114
+ const promptLookups = new Map();
115
+ const getPromptRuntime = () => {
116
+ promptRuntime ??= createSharedPromptRuntime(adapter, options);
117
+ return promptRuntime;
118
+ };
119
+ const getRuntime = async () => {
120
+ runtime ??= createSharedRuntime(adapter, options);
121
+ return runtime;
122
+ };
123
+ return {
124
+ async lookupHints(args) {
125
+ if (args.sessionId) {
126
+ const existingRuntime = await getRuntime();
127
+ existingRuntime.resetSession(args.sessionId);
128
+ }
129
+ const fullRuntime = await getRuntime();
130
+ await fullRuntime.signalHostEvent({
131
+ host: adapter,
132
+ sessionId: args.sessionId,
133
+ cwd: args.cwd,
134
+ userMessage: args.prompt,
135
+ taskSummary: args.prompt
136
+ }, "prompt_lookup");
137
+ const context = {
138
+ host: adapter,
139
+ sessionId: args.sessionId,
140
+ cwd: args.cwd,
141
+ userMessage: args.prompt,
142
+ taskSummary: args.prompt
143
+ };
144
+ const result = await getPromptRuntime().beforePromptBuild(context);
145
+ promptLookups.set(args.sessionId ?? "global", {
146
+ context,
147
+ injectedNodeIds: result.input.injected_node_ids
148
+ });
149
+ return {
150
+ mode: result.mode,
151
+ text: result.text,
152
+ notice: result.notice,
153
+ injectedNodeIds: result.input.injected_node_ids,
154
+ summary: summarizeScorecard(result.scorecard),
155
+ deliveryMode: result.deliveryMode,
156
+ delivered: result.delivered
157
+ };
158
+ },
159
+ async signalHostEvent(args) {
160
+ const fullRuntime = await getRuntime();
161
+ return fullRuntime.signalHostEvent({
162
+ host: adapter,
163
+ sessionId: args.sessionId,
164
+ cwd: args.cwd,
165
+ userMessage: "",
166
+ taskSummary: args.trigger
167
+ }, args.trigger);
168
+ },
169
+ async recordToolResult(args) {
170
+ const fullRuntime = await getRuntime();
171
+ const event = await fullRuntime.persistToolResult({
172
+ sessionId: args.sessionId,
173
+ toolName: args.toolName,
174
+ inputSummary: args.inputSummary,
175
+ outputSummary: args.outputSummary,
176
+ errorSignature: args.errorSignature,
177
+ exitCode: args.exitCode,
178
+ status: args.status
179
+ });
180
+ return {
181
+ status: "recorded",
182
+ toolName: event.tool_name,
183
+ eventStatus: event.status,
184
+ hasErrorSignature: Boolean(event.error_signature),
185
+ exitCode: event.exit_code
186
+ };
187
+ },
188
+ async finalizeTask(args) {
189
+ const fullRuntime = await getRuntime();
190
+ const promptLookup = promptLookups.get(args.sessionId);
191
+ const input = await fullRuntime.finalizeTask({
192
+ host: adapter,
193
+ sessionId: args.sessionId,
194
+ cwd: args.cwd ?? promptLookup?.context.cwd,
195
+ userMessage: args.prompt ?? "",
196
+ taskSummary: args.prompt ?? promptLookup?.context.taskSummary,
197
+ contextSummary: args.contextSummary,
198
+ injectedNodeIds: args.injectedNodeIds ?? promptLookup?.injectedNodeIds
199
+ });
200
+ promptLookups.delete(args.sessionId ?? "global");
201
+ return {
202
+ status: "finalized",
203
+ taskType: input.task_type,
204
+ outcomeSignal: input.outcome_signal,
205
+ injectedNodeIds: input.injected_node_ids,
206
+ recordedToolEvents: input.tool_events.length,
207
+ feedbackHint: input.injected_node_ids.length > 0
208
+ ? "If the injected guidance helped or harmed this task, call experienceengine_quick_feedback."
209
+ : undefined
210
+ };
211
+ },
212
+ async waitForBackgroundLearning() {
213
+ const fullRuntime = await getRuntime();
214
+ await fullRuntime.waitForBackgroundLearning();
215
+ }
216
+ };
217
+ };
218
+ //# sourceMappingURL=behavior-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behavior-loop.js","sourceRoot":"","sources":["../../../src/adapters/shared-mcp/behavior-loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { type FeedbackValue } from "../../interaction/service.js";
3
+ import { type ExperienceAdapter } from "../../interaction/operational-service.js";
4
+ import { ExperienceOperationalActionsService, type OperationalActionsDeps } from "../../interaction/operational-actions-service.js";
5
+ import { ExperienceStateArtifactService } from "../../interaction/state-artifact-service.js";
6
+ import type { DeliveryState, ExperienceNodeType, ExperienceState, TaskType } from "../../types/domain.js";
7
+ import type { HygieneFindingType, HygieneSeverity } from "../../maintenance/experience-hygiene.js";
8
+ import type { ExportDraftRisk } from "../../maintenance/experience-export-drafts.js";
9
+ import { type SharedServerOptions } from "./behavior-loop.js";
10
+ export type SharedMcpServerOptions = SharedServerOptions & {
11
+ operationalActionsDeps?: OperationalActionsDeps;
12
+ operationalActionsService?: ExperienceOperationalActionsService;
13
+ stateArtifactService?: ExperienceStateArtifactService;
14
+ };
15
+ type SharedRecentMode = "all" | "injected";
16
+ type SharedScopeArgs = {
17
+ cwd?: string;
18
+ };
19
+ export declare const createSharedInteractionSurface: (adapter: ExperienceAdapter, options?: SharedMcpServerOptions) => {
20
+ inspectLast(): Promise<import("../../interaction/service.js").ExperienceLastInspection | undefined>;
21
+ inspectRecent(args?: {
22
+ mode?: SharedRecentMode;
23
+ limit?: number;
24
+ }): Promise<import("../../interaction/service.js").ExperienceRecentInspection[]>;
25
+ listActiveNodes(): Promise<import("../../interaction/service.js").ExperienceNodeSummary[]>;
26
+ inspectNode(args: {
27
+ nodeId: string;
28
+ }): Promise<import("../../interaction/service.js").ExperienceNodeDetail | undefined>;
29
+ listNodesByState(args: {
30
+ state: ExperienceState;
31
+ }): Promise<import("../../interaction/service.js").ExperienceNodeSummary[]>;
32
+ listNodesByType(args: {
33
+ nodeType: ExperienceNodeType;
34
+ }): Promise<import("../../interaction/service.js").ExperienceNodeSummary[]>;
35
+ inspectLearningSummary(): Promise<import("../../interaction/service.js").ExperienceLearningSummary>;
36
+ inspectRepoSummary(args?: SharedScopeArgs): Promise<import("../../interaction/repo-summary.js").ExperienceRepoSummary>;
37
+ inspectReview(args?: SharedScopeArgs & {
38
+ limit?: number;
39
+ }): Promise<import("../../maintenance/operator-review-flow.js").OperatorReviewReport>;
40
+ inspectGovernance(args?: SharedScopeArgs): Promise<{
41
+ scopeId: string;
42
+ status: "clear" | "attention";
43
+ recentAutomaticActions: number;
44
+ failedRuns: number;
45
+ pendingApprovals: number;
46
+ lastRunStatus?: string;
47
+ lastFailureClass?: string;
48
+ recentRuns: Array<{
49
+ runId: string;
50
+ trigger: string;
51
+ status: string;
52
+ failureClass?: string;
53
+ updatedAt: string;
54
+ }>;
55
+ recentActions: Array<{
56
+ actionId: string;
57
+ planId?: string;
58
+ actionType: string;
59
+ status: string;
60
+ rollbackRef?: string;
61
+ updatedAt: string;
62
+ }>;
63
+ }>;
64
+ inspectGovernancePendingApprovals(args?: SharedScopeArgs): Promise<{
65
+ scopeId: string;
66
+ approvals: Array<{
67
+ approvalId: string;
68
+ actionId: string;
69
+ planId?: string;
70
+ status: string;
71
+ diffSummary?: string;
72
+ createdAt: string;
73
+ updatedAt: string;
74
+ }>;
75
+ }>;
76
+ inspectHygiene(args?: {
77
+ cwd?: string;
78
+ type?: HygieneFindingType;
79
+ severity?: HygieneSeverity;
80
+ limit?: number;
81
+ }): Promise<import("../../maintenance/experience-hygiene.js").HygieneReviewReport>;
82
+ inspectExportDrafts(args?: {
83
+ cwd?: string;
84
+ nodeId?: string;
85
+ nodeType?: ExperienceNodeType;
86
+ taskFamily?: TaskType;
87
+ state?: ExperienceState;
88
+ deliveryState?: DeliveryState;
89
+ risk?: ExportDraftRisk;
90
+ limit?: number;
91
+ }): Promise<import("../../maintenance/experience-export-drafts.js").ExperienceExportDraftReport>;
92
+ explainLastDecision(args: {
93
+ cwd?: string;
94
+ userMessage: string;
95
+ }): Promise<string>;
96
+ feedbackLast(args: {
97
+ feedback: FeedbackValue;
98
+ }): Promise<import("../../interaction/service.js").FeedbackResult>;
99
+ feedbackNode(args: {
100
+ nodeId: string;
101
+ feedback: FeedbackValue;
102
+ }): Promise<import("../../interaction/service.js").FeedbackResult>;
103
+ disableScope(args?: SharedScopeArgs): Promise<import("../../interaction/service.js").ScopeToggleResult>;
104
+ enableScope(args?: SharedScopeArgs): Promise<import("../../interaction/service.js").ScopeToggleResult>;
105
+ coolNode(args: {
106
+ nodeId: string;
107
+ }): Promise<import("../../interaction/service.js").NodeLifecycleResult>;
108
+ retireNode(args: {
109
+ nodeId: string;
110
+ }): Promise<import("../../interaction/service.js").NodeLifecycleResult>;
111
+ };
112
+ export declare const createSharedMcpServer: (adapter: ExperienceAdapter, options?: SharedMcpServerOptions) => McpServer;
113
+ export {};