hivemind-context-governance 1.3.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/CHANGELOG.md +95 -0
- package/LICENSE +21 -0
- package/README.md +218 -0
- package/dist/cli/init.d.ts +23 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +175 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +162 -0
- package/dist/cli.js.map +1 -0
- package/dist/dashboard/i18n/en.d.ts +43 -0
- package/dist/dashboard/i18n/en.d.ts.map +1 -0
- package/dist/dashboard/i18n/en.js +43 -0
- package/dist/dashboard/i18n/en.js.map +1 -0
- package/dist/dashboard/i18n/index.d.ts +10 -0
- package/dist/dashboard/i18n/index.d.ts.map +1 -0
- package/dist/dashboard/i18n/index.js +14 -0
- package/dist/dashboard/i18n/index.js.map +1 -0
- package/dist/dashboard/i18n/vi.d.ts +43 -0
- package/dist/dashboard/i18n/vi.d.ts.map +1 -0
- package/dist/dashboard/i18n/vi.js +43 -0
- package/dist/dashboard/i18n/vi.js.map +1 -0
- package/dist/dashboard/server.d.ts +23 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +282 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/hooks/compaction.d.ts +21 -0
- package/dist/hooks/compaction.d.ts.map +1 -0
- package/dist/hooks/compaction.js +79 -0
- package/dist/hooks/compaction.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/session-lifecycle.d.ts +28 -0
- package/dist/hooks/session-lifecycle.d.ts.map +1 -0
- package/dist/hooks/session-lifecycle.js +94 -0
- package/dist/hooks/session-lifecycle.js.map +1 -0
- package/dist/hooks/tool-gate.d.ts +28 -0
- package/dist/hooks/tool-gate.d.ts.map +1 -0
- package/dist/hooks/tool-gate.js +152 -0
- package/dist/hooks/tool-gate.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +159 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/complexity.d.ts +41 -0
- package/dist/lib/complexity.d.ts.map +1 -0
- package/dist/lib/complexity.js +67 -0
- package/dist/lib/complexity.js.map +1 -0
- package/dist/lib/context-refresh.d.ts +46 -0
- package/dist/lib/context-refresh.d.ts.map +1 -0
- package/dist/lib/context-refresh.js +77 -0
- package/dist/lib/context-refresh.js.map +1 -0
- package/dist/lib/index.d.ts +10 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +10 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/logging.d.ts +13 -0
- package/dist/lib/logging.d.ts.map +1 -0
- package/dist/lib/logging.js +40 -0
- package/dist/lib/logging.js.map +1 -0
- package/dist/lib/persistence.d.ts +15 -0
- package/dist/lib/persistence.d.ts.map +1 -0
- package/dist/lib/persistence.js +62 -0
- package/dist/lib/persistence.js.map +1 -0
- package/dist/lib/planning-fs.d.ts +34 -0
- package/dist/lib/planning-fs.d.ts.map +1 -0
- package/dist/lib/planning-fs.js +134 -0
- package/dist/lib/planning-fs.js.map +1 -0
- package/dist/lib/sentiment.d.ts +31 -0
- package/dist/lib/sentiment.d.ts.map +1 -0
- package/dist/lib/sentiment.js +158 -0
- package/dist/lib/sentiment.js.map +1 -0
- package/dist/schemas/brain-state.d.ts +60 -0
- package/dist/schemas/brain-state.d.ts.map +1 -0
- package/dist/schemas/brain-state.js +176 -0
- package/dist/schemas/brain-state.js.map +1 -0
- package/dist/schemas/config.d.ts +51 -0
- package/dist/schemas/config.d.ts.map +1 -0
- package/dist/schemas/config.js +128 -0
- package/dist/schemas/config.js.map +1 -0
- package/dist/schemas/hierarchy.d.ts +22 -0
- package/dist/schemas/hierarchy.d.ts.map +1 -0
- package/dist/schemas/hierarchy.js +27 -0
- package/dist/schemas/hierarchy.js.map +1 -0
- package/dist/schemas/index.d.ts +7 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +7 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/tools/compact-session.d.ts +15 -0
- package/dist/tools/compact-session.d.ts.map +1 -0
- package/dist/tools/compact-session.js +76 -0
- package/dist/tools/compact-session.js.map +1 -0
- package/dist/tools/declare-intent.d.ts +15 -0
- package/dist/tools/declare-intent.d.ts.map +1 -0
- package/dist/tools/declare-intent.js +83 -0
- package/dist/tools/declare-intent.js.map +1 -0
- package/dist/tools/index.d.ts +14 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +14 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/map-context.d.ts +15 -0
- package/dist/tools/map-context.d.ts.map +1 -0
- package/dist/tools/map-context.js +85 -0
- package/dist/tools/map-context.js.map +1 -0
- package/dist/tools/self-rate.d.ts +15 -0
- package/dist/tools/self-rate.d.ts.map +1 -0
- package/dist/tools/self-rate.js +76 -0
- package/dist/tools/self-rate.js.map +1 -0
- package/package.json +71 -0
- package/src/cli/init.ts +214 -0
- package/src/cli.ts +178 -0
- package/src/dashboard/i18n/en.ts +43 -0
- package/src/dashboard/i18n/index.ts +20 -0
- package/src/dashboard/i18n/vi.ts +43 -0
- package/src/dashboard/server.ts +372 -0
- package/src/hooks/compaction.ts +104 -0
- package/src/hooks/index.ts +8 -0
- package/src/hooks/session-lifecycle.ts +133 -0
- package/src/hooks/tool-gate.ts +205 -0
- package/src/index.ts +206 -0
- package/src/lib/complexity.ts +96 -0
- package/src/lib/context-refresh.ts +107 -0
- package/src/lib/index.ts +10 -0
- package/src/lib/logging.ts +53 -0
- package/src/lib/persistence.ts +83 -0
- package/src/lib/planning-fs.ts +187 -0
- package/src/lib/sentiment.ts +183 -0
- package/src/schemas/brain-state.ts +257 -0
- package/src/schemas/config.ts +184 -0
- package/src/schemas/hierarchy.ts +58 -0
- package/src/schemas/index.ts +7 -0
- package/src/tools/compact-session.ts +97 -0
- package/src/tools/declare-intent.ts +104 -0
- package/src/tools/index.ts +14 -0
- package/src/tools/map-context.ts +105 -0
- package/src/tools/self-rate.ts +86 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain State Schema
|
|
3
|
+
* Core state machine for session governance
|
|
4
|
+
*/
|
|
5
|
+
export const BRAIN_STATE_VERSION = "1.0.0";
|
|
6
|
+
export function generateSessionId() {
|
|
7
|
+
const timestamp = Date.now();
|
|
8
|
+
const random = Math.random().toString(36).substring(2, 8);
|
|
9
|
+
return `session-${timestamp}-${random}`;
|
|
10
|
+
}
|
|
11
|
+
export function createBrainState(sessionId, config, mode = "plan_driven") {
|
|
12
|
+
const now = Date.now();
|
|
13
|
+
return {
|
|
14
|
+
session: {
|
|
15
|
+
id: sessionId,
|
|
16
|
+
mode,
|
|
17
|
+
governance_mode: config.governance_mode,
|
|
18
|
+
governance_status: config.governance_mode === "strict" ? "LOCKED" : "OPEN",
|
|
19
|
+
start_time: now,
|
|
20
|
+
last_activity: now,
|
|
21
|
+
},
|
|
22
|
+
hierarchy: {
|
|
23
|
+
trajectory: "",
|
|
24
|
+
tactic: "",
|
|
25
|
+
action: "",
|
|
26
|
+
},
|
|
27
|
+
metrics: {
|
|
28
|
+
turn_count: 0,
|
|
29
|
+
drift_score: 100,
|
|
30
|
+
files_touched: [],
|
|
31
|
+
context_updates: 0,
|
|
32
|
+
ratings: [],
|
|
33
|
+
auto_health_score: 100,
|
|
34
|
+
total_tool_calls: 0,
|
|
35
|
+
successful_tool_calls: 0,
|
|
36
|
+
},
|
|
37
|
+
sentiment_signals: [],
|
|
38
|
+
complexity_nudge_shown: false,
|
|
39
|
+
version: BRAIN_STATE_VERSION,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function isSessionLocked(state) {
|
|
43
|
+
return state.session.governance_status === "LOCKED";
|
|
44
|
+
}
|
|
45
|
+
export function unlockSession(state) {
|
|
46
|
+
return {
|
|
47
|
+
...state,
|
|
48
|
+
session: {
|
|
49
|
+
...state.session,
|
|
50
|
+
governance_status: "OPEN",
|
|
51
|
+
last_activity: Date.now(),
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function lockSession(state) {
|
|
56
|
+
return {
|
|
57
|
+
...state,
|
|
58
|
+
session: {
|
|
59
|
+
...state.session,
|
|
60
|
+
governance_status: "LOCKED",
|
|
61
|
+
last_activity: Date.now(),
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function incrementTurnCount(state) {
|
|
66
|
+
return {
|
|
67
|
+
...state,
|
|
68
|
+
metrics: {
|
|
69
|
+
...state.metrics,
|
|
70
|
+
turn_count: state.metrics.turn_count + 1,
|
|
71
|
+
},
|
|
72
|
+
session: {
|
|
73
|
+
...state.session,
|
|
74
|
+
last_activity: Date.now(),
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export function resetTurnCount(state) {
|
|
79
|
+
return {
|
|
80
|
+
...state,
|
|
81
|
+
metrics: {
|
|
82
|
+
...state.metrics,
|
|
83
|
+
turn_count: 0,
|
|
84
|
+
drift_score: Math.min(100, state.metrics.drift_score + 10),
|
|
85
|
+
},
|
|
86
|
+
session: {
|
|
87
|
+
...state.session,
|
|
88
|
+
last_activity: Date.now(),
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export function updateHierarchy(state, hierarchy) {
|
|
93
|
+
return {
|
|
94
|
+
...state,
|
|
95
|
+
hierarchy: { ...state.hierarchy, ...hierarchy },
|
|
96
|
+
metrics: {
|
|
97
|
+
...state.metrics,
|
|
98
|
+
context_updates: state.metrics.context_updates + 1,
|
|
99
|
+
},
|
|
100
|
+
session: {
|
|
101
|
+
...state.session,
|
|
102
|
+
last_activity: Date.now(),
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export function addFileTouched(state, filePath) {
|
|
107
|
+
if (state.metrics.files_touched.includes(filePath)) {
|
|
108
|
+
return state;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
...state,
|
|
112
|
+
metrics: {
|
|
113
|
+
...state.metrics,
|
|
114
|
+
files_touched: [...state.metrics.files_touched, filePath],
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export function calculateDriftScore(state) {
|
|
119
|
+
const turnsPenalty = Math.min(50, state.metrics.turn_count * 5);
|
|
120
|
+
const updatesBonus = Math.min(20, state.metrics.context_updates * 2);
|
|
121
|
+
return Math.max(0, Math.min(100, 100 - turnsPenalty + updatesBonus));
|
|
122
|
+
}
|
|
123
|
+
export function shouldTriggerDriftWarning(state, maxTurns) {
|
|
124
|
+
return state.metrics.turn_count >= maxTurns && state.metrics.drift_score < 50;
|
|
125
|
+
}
|
|
126
|
+
export function addSelfRating(state, rating) {
|
|
127
|
+
const newRating = {
|
|
128
|
+
...rating,
|
|
129
|
+
timestamp: Date.now(),
|
|
130
|
+
turn_number: state.metrics.turn_count,
|
|
131
|
+
};
|
|
132
|
+
return {
|
|
133
|
+
...state,
|
|
134
|
+
metrics: {
|
|
135
|
+
...state.metrics,
|
|
136
|
+
ratings: [...state.metrics.ratings, newRating],
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
export function trackToolCall(state, success) {
|
|
141
|
+
const total = state.metrics.total_tool_calls + 1;
|
|
142
|
+
const successful = success
|
|
143
|
+
? state.metrics.successful_tool_calls + 1
|
|
144
|
+
: state.metrics.successful_tool_calls;
|
|
145
|
+
const healthScore = total > 0 ? Math.round((successful / total) * 100) : 100;
|
|
146
|
+
return {
|
|
147
|
+
...state,
|
|
148
|
+
metrics: {
|
|
149
|
+
...state.metrics,
|
|
150
|
+
total_tool_calls: total,
|
|
151
|
+
successful_tool_calls: successful,
|
|
152
|
+
auto_health_score: healthScore,
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
export function addSentimentSignals(state, signals) {
|
|
157
|
+
if (signals.length === 0)
|
|
158
|
+
return state;
|
|
159
|
+
return {
|
|
160
|
+
...state,
|
|
161
|
+
sentiment_signals: [...state.sentiment_signals, ...signals],
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export function setComplexityNudgeShown(state) {
|
|
165
|
+
return {
|
|
166
|
+
...state,
|
|
167
|
+
complexity_nudge_shown: true,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
export function resetComplexityNudge(state) {
|
|
171
|
+
return {
|
|
172
|
+
...state,
|
|
173
|
+
complexity_nudge_shown: false,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=brain-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-state.js","sourceRoot":"","sources":["../../src/schemas/brain-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HiveMind Configuration Schema
|
|
3
|
+
* Defines governance modes, project settings, and agent behavior constraints
|
|
4
|
+
*/
|
|
5
|
+
export type GovernanceMode = "permissive" | "assisted" | "strict";
|
|
6
|
+
export type Language = "en" | "vi";
|
|
7
|
+
export type ExpertLevel = "beginner" | "intermediate" | "advanced" | "expert";
|
|
8
|
+
export type OutputStyle = "explanatory" | "outline" | "skeptical" | "architecture" | "minimal";
|
|
9
|
+
export interface AgentBehaviorConfig {
|
|
10
|
+
/** Language for all responses */
|
|
11
|
+
language: Language;
|
|
12
|
+
/** Expertise level - affects depth and assumptions */
|
|
13
|
+
expert_level: ExpertLevel;
|
|
14
|
+
/** Output style - affects response format */
|
|
15
|
+
output_style: OutputStyle;
|
|
16
|
+
/** Additional behavioral constraints */
|
|
17
|
+
constraints: {
|
|
18
|
+
/** Require code review before accepting */
|
|
19
|
+
require_code_review: boolean;
|
|
20
|
+
/** Enforce test-driven development */
|
|
21
|
+
enforce_tdd: boolean;
|
|
22
|
+
/** Maximum response length in tokens (approximate) */
|
|
23
|
+
max_response_tokens: number;
|
|
24
|
+
/** Always explain 'why' not just 'what' */
|
|
25
|
+
explain_reasoning: boolean;
|
|
26
|
+
/** Challenge user assumptions */
|
|
27
|
+
be_skeptical: boolean;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export interface HiveMindConfig {
|
|
31
|
+
governance_mode: GovernanceMode;
|
|
32
|
+
language: Language;
|
|
33
|
+
max_turns_before_warning: number;
|
|
34
|
+
max_active_md_lines: number;
|
|
35
|
+
auto_compact_on_turns: number;
|
|
36
|
+
/** Agent behavior configuration - injected into every session */
|
|
37
|
+
agent_behavior: AgentBehaviorConfig;
|
|
38
|
+
}
|
|
39
|
+
export declare const DEFAULT_AGENT_BEHAVIOR: AgentBehaviorConfig;
|
|
40
|
+
export declare const DEFAULT_CONFIG: HiveMindConfig;
|
|
41
|
+
export declare function createConfig(overrides?: Partial<HiveMindConfig>): HiveMindConfig;
|
|
42
|
+
export declare function isValidGovernanceMode(mode: string): mode is GovernanceMode;
|
|
43
|
+
export declare function isValidLanguage(lang: string): lang is Language;
|
|
44
|
+
export declare function isValidExpertLevel(level: string): level is ExpertLevel;
|
|
45
|
+
export declare function isValidOutputStyle(style: string): style is OutputStyle;
|
|
46
|
+
/**
|
|
47
|
+
* Generates the mandatory agent configuration prompt that is injected
|
|
48
|
+
* at every session opening and persists throughout the conversation.
|
|
49
|
+
*/
|
|
50
|
+
export declare function generateAgentBehaviorPrompt(config: AgentBehaviorConfig): string;
|
|
51
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AACnC,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;AAC9E,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,SAAS,GACT,WAAW,GACX,cAAc,GACd,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,QAAQ,EAAE,QAAQ,CAAC;IACnB,sDAAsD;IACtD,YAAY,EAAE,WAAW,CAAC;IAC1B,6CAA6C;IAC7C,YAAY,EAAE,WAAW,CAAC;IAC1B,wCAAwC;IACxC,WAAW,EAAE;QACX,2CAA2C;QAC3C,mBAAmB,EAAE,OAAO,CAAC;QAC7B,sCAAsC;QACtC,WAAW,EAAE,OAAO,CAAC;QACrB,sDAAsD;QACtD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,2CAA2C;QAC3C,iBAAiB,EAAE,OAAO,CAAC;QAC3B,iCAAiC;QACjC,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,cAAc,CAAC;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,wBAAwB,EAAE,MAAM,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iEAAiE;IACjE,cAAc,EAAE,mBAAmB,CAAC;CACrC;AAED,eAAO,MAAM,sBAAsB,EAAE,mBAWpC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAO5B,CAAC;AAEF,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CASpF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,cAAc,CAE1E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,QAAQ,CAE9D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,WAAW,CAEtE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,WAAW,CAEtE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAmF/E"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HiveMind Configuration Schema
|
|
3
|
+
* Defines governance modes, project settings, and agent behavior constraints
|
|
4
|
+
*/
|
|
5
|
+
export const DEFAULT_AGENT_BEHAVIOR = {
|
|
6
|
+
language: "en",
|
|
7
|
+
expert_level: "intermediate",
|
|
8
|
+
output_style: "explanatory",
|
|
9
|
+
constraints: {
|
|
10
|
+
require_code_review: false,
|
|
11
|
+
enforce_tdd: false,
|
|
12
|
+
max_response_tokens: 2000,
|
|
13
|
+
explain_reasoning: true,
|
|
14
|
+
be_skeptical: false,
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
export const DEFAULT_CONFIG = {
|
|
18
|
+
governance_mode: "assisted",
|
|
19
|
+
language: "en",
|
|
20
|
+
max_turns_before_warning: 5,
|
|
21
|
+
max_active_md_lines: 50,
|
|
22
|
+
auto_compact_on_turns: 20,
|
|
23
|
+
agent_behavior: DEFAULT_AGENT_BEHAVIOR,
|
|
24
|
+
};
|
|
25
|
+
export function createConfig(overrides = {}) {
|
|
26
|
+
return {
|
|
27
|
+
...DEFAULT_CONFIG,
|
|
28
|
+
...overrides,
|
|
29
|
+
agent_behavior: {
|
|
30
|
+
...DEFAULT_AGENT_BEHAVIOR,
|
|
31
|
+
...overrides.agent_behavior,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function isValidGovernanceMode(mode) {
|
|
36
|
+
return ["permissive", "assisted", "strict"].includes(mode);
|
|
37
|
+
}
|
|
38
|
+
export function isValidLanguage(lang) {
|
|
39
|
+
return ["en", "vi"].includes(lang);
|
|
40
|
+
}
|
|
41
|
+
export function isValidExpertLevel(level) {
|
|
42
|
+
return ["beginner", "intermediate", "advanced", "expert"].includes(level);
|
|
43
|
+
}
|
|
44
|
+
export function isValidOutputStyle(style) {
|
|
45
|
+
return ["explanatory", "outline", "skeptical", "architecture", "minimal"].includes(style);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Generates the mandatory agent configuration prompt that is injected
|
|
49
|
+
* at every session opening and persists throughout the conversation.
|
|
50
|
+
*/
|
|
51
|
+
export function generateAgentBehaviorPrompt(config) {
|
|
52
|
+
const lines = [];
|
|
53
|
+
lines.push("<agent-configuration>");
|
|
54
|
+
lines.push("MANDATORY: You MUST obey these constraints for this entire session:");
|
|
55
|
+
lines.push("");
|
|
56
|
+
// Language enforcement
|
|
57
|
+
const langNames = {
|
|
58
|
+
en: "English",
|
|
59
|
+
vi: "Vietnamese (Tiếng Việt)",
|
|
60
|
+
};
|
|
61
|
+
lines.push(`[LANGUAGE] Respond ONLY in ${langNames[config.language]}. No exceptions.`);
|
|
62
|
+
lines.push("");
|
|
63
|
+
// Expert level
|
|
64
|
+
const expertDescriptions = {
|
|
65
|
+
beginner: "Explain everything simply. Define terms. No assumptions of prior knowledge.",
|
|
66
|
+
intermediate: "Standard technical depth. Some domain knowledge assumed.",
|
|
67
|
+
advanced: "Concise, sophisticated. Assume strong domain expertise.",
|
|
68
|
+
expert: "Terse, reference advanced concepts. Minimal hand-holding.",
|
|
69
|
+
};
|
|
70
|
+
lines.push(`[EXPERT LEVEL] ${config.expert_level.toUpperCase()}: ${expertDescriptions[config.expert_level]}`);
|
|
71
|
+
lines.push("");
|
|
72
|
+
// Output style
|
|
73
|
+
const styleInstructions = {
|
|
74
|
+
explanatory: [
|
|
75
|
+
"- Explain WHY, not just WHAT",
|
|
76
|
+
"- Provide context and rationale",
|
|
77
|
+
"- Use analogies where helpful",
|
|
78
|
+
"- Answer follow-up questions proactively",
|
|
79
|
+
],
|
|
80
|
+
outline: [
|
|
81
|
+
"- Use bullet points and structured lists",
|
|
82
|
+
"- Headings for organization",
|
|
83
|
+
"- Summary at the top",
|
|
84
|
+
"- Details collapsed or abbreviated",
|
|
85
|
+
],
|
|
86
|
+
skeptical: [
|
|
87
|
+
"- Challenge assumptions in the request",
|
|
88
|
+
"- Point out risks and edge cases",
|
|
89
|
+
"- Ask clarifying questions",
|
|
90
|
+
"- Suggest alternatives",
|
|
91
|
+
"- Verify requirements are complete",
|
|
92
|
+
],
|
|
93
|
+
architecture: [
|
|
94
|
+
"- Start with high-level design",
|
|
95
|
+
"- Discuss patterns and trade-offs",
|
|
96
|
+
"- Component diagrams before code",
|
|
97
|
+
"- Implementation follows design",
|
|
98
|
+
],
|
|
99
|
+
minimal: [
|
|
100
|
+
"- Code only, minimal prose",
|
|
101
|
+
"- No explanations unless asked",
|
|
102
|
+
"- Direct answers",
|
|
103
|
+
],
|
|
104
|
+
};
|
|
105
|
+
lines.push(`[OUTPUT STYLE] ${config.output_style.toUpperCase()}:`);
|
|
106
|
+
styleInstructions[config.output_style].forEach(instruction => lines.push(instruction));
|
|
107
|
+
lines.push("");
|
|
108
|
+
// Constraints
|
|
109
|
+
lines.push("[CONSTRAINTS]");
|
|
110
|
+
if (config.constraints.require_code_review) {
|
|
111
|
+
lines.push("- MUST review code before accepting: check for bugs, smells, tests");
|
|
112
|
+
}
|
|
113
|
+
if (config.constraints.enforce_tdd) {
|
|
114
|
+
lines.push("- TDD REQUIRED: Write failing test first, then implementation");
|
|
115
|
+
}
|
|
116
|
+
if (config.constraints.explain_reasoning) {
|
|
117
|
+
lines.push("- ALWAYS explain your reasoning");
|
|
118
|
+
}
|
|
119
|
+
if (config.constraints.be_skeptical) {
|
|
120
|
+
lines.push("- BE SKEPTICAL: Question requirements, point out gaps");
|
|
121
|
+
}
|
|
122
|
+
lines.push(`- Maximum response: ~${config.constraints.max_response_tokens} tokens`);
|
|
123
|
+
lines.push("");
|
|
124
|
+
lines.push("VIOLATION: If you cannot obey these constraints, state why explicitly.");
|
|
125
|
+
lines.push("</agent-configuration>");
|
|
126
|
+
return lines.join("\n");
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4CH,MAAM,CAAC,MAAM,sBAAsB,GAAwB;IACzD,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,aAAa;IAC3B,WAAW,EAAE;QACX,mBAAmB,EAAE,KAAK;QAC1B,WAAW,EAAE,KAAK;QAClB,mBAAmB,EAAE,IAAI;QACzB,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,KAAK;KACpB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,eAAe,EAAE,UAAU;IAC3B,QAAQ,EAAE,IAAI;IACd,wBAAwB,EAAE,CAAC;IAC3B,mBAAmB,EAAE,EAAE;IACvB,qBAAqB,EAAE,EAAE;IACzB,cAAc,EAAE,sBAAsB;CACvC,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,YAAqC,EAAE;IAClE,OAAO;QACL,GAAG,cAAc;QACjB,GAAG,SAAS;QACZ,cAAc,EAAE;YACd,GAAG,sBAAsB;YACzB,GAAG,SAAS,CAAC,cAAc;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAA2B;IACrE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,uBAAuB;IACvB,MAAM,SAAS,GAA6B;QAC1C,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,yBAAyB;KAC9B,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,8BAA8B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACvF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,eAAe;IACf,MAAM,kBAAkB,GAAgC;QACtD,QAAQ,EAAE,6EAA6E;QACvF,YAAY,EAAE,0DAA0D;QACxE,QAAQ,EAAE,yDAAyD;QACnE,MAAM,EAAE,2DAA2D;KACpE,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC9G,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,eAAe;IACf,MAAM,iBAAiB,GAAkC;QACvD,WAAW,EAAE;YACX,8BAA8B;YAC9B,iCAAiC;YACjC,+BAA+B;YAC/B,0CAA0C;SAC3C;QACD,OAAO,EAAE;YACP,0CAA0C;YAC1C,6BAA6B;YAC7B,sBAAsB;YACtB,oCAAoC;SACrC;QACD,SAAS,EAAE;YACT,wCAAwC;YACxC,kCAAkC;YAClC,4BAA4B;YAC5B,wBAAwB;YACxB,oCAAoC;SACrC;QACD,YAAY,EAAE;YACZ,gCAAgC;YAChC,mCAAmC;YACnC,kCAAkC;YAClC,iCAAiC;SAClC;QACD,OAAO,EAAE;YACP,4BAA4B;YAC5B,gCAAgC;YAChC,kBAAkB;SACnB;KACF,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACnE,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACvF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,cAAc;IACd,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,WAAW,CAAC,mBAAmB,SAAS,CAAC,CAAC;IACpF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAErC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hierarchy Schema
|
|
3
|
+
* 3-level context hierarchy: trajectory → tactic → action
|
|
4
|
+
*/
|
|
5
|
+
export type HierarchyLevel = "trajectory" | "tactic" | "action";
|
|
6
|
+
export type ContextStatus = "pending" | "active" | "complete" | "blocked";
|
|
7
|
+
export interface ContextMap {
|
|
8
|
+
level: HierarchyLevel;
|
|
9
|
+
content: string;
|
|
10
|
+
status: ContextStatus;
|
|
11
|
+
timestamp: number;
|
|
12
|
+
}
|
|
13
|
+
export interface HierarchyState {
|
|
14
|
+
trajectory: string;
|
|
15
|
+
tactic: string;
|
|
16
|
+
action: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function createHierarchyState(trajectory?: string, tactic?: string, action?: string): HierarchyState;
|
|
19
|
+
export declare function updateHierarchyLevel(state: HierarchyState, level: HierarchyLevel, content: string): HierarchyState;
|
|
20
|
+
export declare function validateHierarchyTransition(current: HierarchyLevel | "complete", next: HierarchyLevel): boolean;
|
|
21
|
+
export declare function getLevelDepth(level: HierarchyLevel): number;
|
|
22
|
+
//# sourceMappingURL=hierarchy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/schemas/hierarchy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,oBAAoB,CAClC,UAAU,SAAK,EACf,MAAM,SAAK,EACX,MAAM,SAAK,GACV,cAAc,CAEhB;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,MAAM,GACd,cAAc,CAEhB;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,cAAc,GAAG,UAAU,EACpC,IAAI,EAAE,cAAc,GACnB,OAAO,CAQT;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAO3D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hierarchy Schema
|
|
3
|
+
* 3-level context hierarchy: trajectory → tactic → action
|
|
4
|
+
*/
|
|
5
|
+
export function createHierarchyState(trajectory = "", tactic = "", action = "") {
|
|
6
|
+
return { trajectory, tactic, action };
|
|
7
|
+
}
|
|
8
|
+
export function updateHierarchyLevel(state, level, content) {
|
|
9
|
+
return { ...state, [level]: content };
|
|
10
|
+
}
|
|
11
|
+
export function validateHierarchyTransition(current, next) {
|
|
12
|
+
const levels = ["trajectory", "tactic", "action"];
|
|
13
|
+
const currentIndex = levels.indexOf(current);
|
|
14
|
+
const nextIndex = levels.indexOf(next);
|
|
15
|
+
// Allow same level or moving down (more specific)
|
|
16
|
+
// Allow moving up only if current is complete
|
|
17
|
+
return nextIndex >= currentIndex || current === "complete";
|
|
18
|
+
}
|
|
19
|
+
export function getLevelDepth(level) {
|
|
20
|
+
const depths = {
|
|
21
|
+
trajectory: 1,
|
|
22
|
+
tactic: 2,
|
|
23
|
+
action: 3,
|
|
24
|
+
};
|
|
25
|
+
return depths[level];
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=hierarchy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/schemas/hierarchy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,MAAM,UAAU,oBAAoB,CAClC,UAAU,GAAG,EAAE,EACf,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EAAE;IAEX,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAqB,EACrB,KAAqB,EACrB,OAAe;IAEf,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAAoC,EACpC,IAAoB;IAEpB,MAAM,MAAM,GAAqB,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAyB,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,kDAAkD;IAClD,8CAA8C;IAC9C,OAAO,SAAS,IAAI,YAAY,IAAI,OAAO,KAAK,UAAU,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAqB;IACjD,MAAM,MAAM,GAAmC;QAC7C,UAAU,EAAE,CAAC;QACb,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;KACV,CAAC;IACF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* compact_session — Archive completed work and reset for next session.
|
|
3
|
+
*
|
|
4
|
+
* Agent Thought: "I'm done, archive this session"
|
|
5
|
+
*
|
|
6
|
+
* Design: Agent-Native lifecycle verb.
|
|
7
|
+
* 1. Iceberg — 0-1 args, system handles archive + reset + index update
|
|
8
|
+
* 2. Context Inference — reads active session from brain state
|
|
9
|
+
* 3. Signal-to-Noise — 1-line summary output
|
|
10
|
+
* 4. No-Shadowing — description matches agent intent
|
|
11
|
+
* 5. Native Parallelism — single call, atomic archival
|
|
12
|
+
*/
|
|
13
|
+
import { type ToolDefinition } from "@opencode-ai/plugin/tool";
|
|
14
|
+
export declare function createCompactSessionTool(directory: string): ToolDefinition;
|
|
15
|
+
//# sourceMappingURL=compact-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact-session.d.ts","sourceRoot":"","sources":["../../src/tools/compact-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAepE,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAoE1E"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* compact_session — Archive completed work and reset for next session.
|
|
3
|
+
*
|
|
4
|
+
* Agent Thought: "I'm done, archive this session"
|
|
5
|
+
*
|
|
6
|
+
* Design: Agent-Native lifecycle verb.
|
|
7
|
+
* 1. Iceberg — 0-1 args, system handles archive + reset + index update
|
|
8
|
+
* 2. Context Inference — reads active session from brain state
|
|
9
|
+
* 3. Signal-to-Noise — 1-line summary output
|
|
10
|
+
* 4. No-Shadowing — description matches agent intent
|
|
11
|
+
* 5. Native Parallelism — single call, atomic archival
|
|
12
|
+
*/
|
|
13
|
+
import { tool } from "@opencode-ai/plugin/tool";
|
|
14
|
+
import { createStateManager, loadConfig } from "../lib/persistence.js";
|
|
15
|
+
import { createBrainState, generateSessionId, lockSession, } from "../schemas/brain-state.js";
|
|
16
|
+
import { readActiveMd, archiveSession, updateIndexMd, resetActiveMd, listArchives, } from "../lib/planning-fs.js";
|
|
17
|
+
export function createCompactSessionTool(directory) {
|
|
18
|
+
return tool({
|
|
19
|
+
description: "Archive completed work and reset for next session. " +
|
|
20
|
+
"Call this when you're done with your current work.",
|
|
21
|
+
args: {
|
|
22
|
+
summary: tool.schema
|
|
23
|
+
.string()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe("Optional 1-line summary of what was accomplished"),
|
|
26
|
+
},
|
|
27
|
+
async execute(args) {
|
|
28
|
+
const stateManager = createStateManager(directory);
|
|
29
|
+
const config = await loadConfig(directory);
|
|
30
|
+
// Load brain state
|
|
31
|
+
const state = await stateManager.load();
|
|
32
|
+
if (!state) {
|
|
33
|
+
return "ERROR: No active session to compact.";
|
|
34
|
+
}
|
|
35
|
+
// Read current active.md content for archival
|
|
36
|
+
const activeMd = await readActiveMd(directory);
|
|
37
|
+
const archiveContent = [
|
|
38
|
+
`# Archived Session: ${state.session.id}`,
|
|
39
|
+
"",
|
|
40
|
+
`**Mode**: ${state.session.mode}`,
|
|
41
|
+
`**Started**: ${new Date(state.session.start_time).toISOString()}`,
|
|
42
|
+
`**Archived**: ${new Date().toISOString()}`,
|
|
43
|
+
`**Turns**: ${state.metrics.turn_count}`,
|
|
44
|
+
`**Drift Score**: ${state.metrics.drift_score}/100`,
|
|
45
|
+
`**Files Touched**: ${state.metrics.files_touched.length}`,
|
|
46
|
+
`**Context Updates**: ${state.metrics.context_updates}`,
|
|
47
|
+
"",
|
|
48
|
+
"## Hierarchy at Archive",
|
|
49
|
+
state.hierarchy.trajectory ? `- **Trajectory**: ${state.hierarchy.trajectory}` : "",
|
|
50
|
+
state.hierarchy.tactic ? `- **Tactic**: ${state.hierarchy.tactic}` : "",
|
|
51
|
+
state.hierarchy.action ? `- **Action**: ${state.hierarchy.action}` : "",
|
|
52
|
+
"",
|
|
53
|
+
"## Session Content",
|
|
54
|
+
activeMd.body,
|
|
55
|
+
]
|
|
56
|
+
.filter(Boolean)
|
|
57
|
+
.join("\n");
|
|
58
|
+
// Archive the session
|
|
59
|
+
await archiveSession(directory, state.session.id, archiveContent);
|
|
60
|
+
// Update index.md with summary
|
|
61
|
+
const summaryLine = args.summary ||
|
|
62
|
+
`Session ${state.session.id}: ${state.metrics.turn_count} turns, ${state.metrics.files_touched.length} files`;
|
|
63
|
+
await updateIndexMd(directory, summaryLine);
|
|
64
|
+
// Reset active.md to template
|
|
65
|
+
await resetActiveMd(directory);
|
|
66
|
+
// Create fresh brain state (new session, locked)
|
|
67
|
+
const newSessionId = generateSessionId();
|
|
68
|
+
const newState = createBrainState(newSessionId, config);
|
|
69
|
+
await stateManager.save(lockSession(newState));
|
|
70
|
+
// Count archives for output
|
|
71
|
+
const archives = await listArchives(directory);
|
|
72
|
+
return `Archived. ${state.metrics.turn_count} turns, ${state.metrics.files_touched.length} files saved. ${archives.length} total archives. Session reset.`;
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=compact-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact-session.js","sourceRoot":"","sources":["../../src/tools/compact-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAuB,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,uBAAuB,CAAA;AAE9B,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,OAAO,IAAI,CAAC;QACV,WAAW,EACT,qDAAqD;YACrD,oDAAoD;QACtD,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI,CAAC,MAAM;iBACjB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,kDAAkD,CAAC;SAChE;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;YAClD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAA;YAE1C,mBAAmB;YACnB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAA;YACvC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,sCAAsC,CAAA;YAC/C,CAAC;YAED,8CAA8C;YAC9C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAA;YAC9C,MAAM,cAAc,GAAG;gBACrB,uBAAuB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;gBACzC,EAAE;gBACF,aAAa,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;gBACjC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE;gBAClE,iBAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;gBAC3C,cAAc,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;gBACxC,oBAAoB,KAAK,CAAC,OAAO,CAAC,WAAW,MAAM;gBACnD,sBAAsB,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC1D,wBAAwB,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE;gBACvD,EAAE;gBACF,yBAAyB;gBACzB,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;gBACnF,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;gBACvE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;gBACvE,EAAE;gBACF,oBAAoB;gBACpB,QAAQ,CAAC,IAAI;aACd;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAA;YAEb,sBAAsB;YACtB,MAAM,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;YAEjE,+BAA+B;YAC/B,MAAM,WAAW,GACf,IAAI,CAAC,OAAO;gBACZ,WAAW,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,UAAU,WAAW,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,QAAQ,CAAA;YAC/G,MAAM,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;YAE3C,8BAA8B;YAC9B,MAAM,aAAa,CAAC,SAAS,CAAC,CAAA;YAE9B,iDAAiD;YACjD,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAA;YACxC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YACvD,MAAM,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;YAE9C,4BAA4B;YAC5B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAA;YAE9C,OAAO,aAAa,KAAK,CAAC,OAAO,CAAC,UAAU,WAAW,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,iBAAiB,QAAQ,CAAC,MAAM,iCAAiC,CAAA;QAC5J,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* declare_intent — Unlock session by declaring work mode and focus.
|
|
3
|
+
*
|
|
4
|
+
* Agent Thought: "I want to start working on something"
|
|
5
|
+
*
|
|
6
|
+
* Design: Agent-Native lifecycle verb.
|
|
7
|
+
* 1. Iceberg — 2 args, system handles state machine + file writes
|
|
8
|
+
* 2. Context Inference — session ID from context, governance mode from config
|
|
9
|
+
* 3. Signal-to-Noise — 1-line output
|
|
10
|
+
* 4. No-Shadowing — description matches agent intent
|
|
11
|
+
* 5. Native Parallelism — idempotent, safe to call repeatedly
|
|
12
|
+
*/
|
|
13
|
+
import { type ToolDefinition } from "@opencode-ai/plugin/tool";
|
|
14
|
+
export declare function createDeclareIntentTool(directory: string): ToolDefinition;
|
|
15
|
+
//# sourceMappingURL=declare-intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declare-intent.d.ts","sourceRoot":"","sources":["../../src/tools/declare-intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAiBpE,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAyEzE"}
|