@adhdev/mesh-shared 1.0.82-rc.35 → 1.0.82-rc.37
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/dist/assistant-protocol.d.ts +11 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +149 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +130 -8
- package/dist/index.mjs.map +1 -1
- package/dist/launch-defaults.d.ts +2 -0
- package/dist/mesh-tool-names.d.ts +2 -2
- package/dist/mission-git-state.d.ts +83 -0
- package/dist/mission-items.d.ts +2 -2
- package/dist/node-facts.d.ts +18 -0
- package/dist/release.d.ts +90 -0
- package/dist/session-launch.d.ts +7 -0
- package/dist/turn-ipc-mission.d.ts +5 -0
- package/package.json +1 -1
- package/src/assistant-protocol.ts +19 -1
- package/src/index.ts +2 -0
- package/src/launch-defaults.ts +2 -0
- package/src/mesh-tool-names.ts +8 -0
- package/src/mission-git-state.ts +112 -0
- package/src/mission-items.ts +2 -2
- package/src/node-facts.ts +18 -0
- package/src/release.ts +121 -0
- package/src/session-launch.ts +9 -0
- package/src/turn-ipc-mission.ts +9 -4
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* Assistant-specific tools remain separate from mesh tools. Driver discovery
|
|
15
15
|
* (list/describe) is shared across all three modes; invoke remains Worker-only.
|
|
16
16
|
*/
|
|
17
|
-
export declare const ASSISTANT_TOOLS: readonly ["projects", "environment", "assistant_action", "project_watch", "project_status", "project_send", "project_read", "project_add", "project_attach_remote", "discover_repos", "memory", "skill_view", "skill_manage", "project_note", "launch_defaults", "launch_defaults_set", "driver_list", "driver_describe", "artifact_list", "artifact_read", "decision_answer", "decision_request"];
|
|
17
|
+
export declare const ASSISTANT_TOOLS: readonly ["projects", "environment", "assistant_action", "project_watch", "project_status", "project_send", "project_read", "project_add", "project_attach_remote", "discover_repos", "memory", "memory_search", "skill_view", "skill_manage", "project_note", "launch_defaults", "launch_defaults_set", "driver_list", "driver_describe", "artifact_list", "artifact_read", "decision_answer", "decision_request", "session_control"];
|
|
18
18
|
export type AssistantTool = typeof ASSISTANT_TOOLS[number];
|
|
19
19
|
export declare function isAssistantTool(value: unknown): value is AssistantTool;
|
|
20
20
|
/** Daemon verb names (§4.4 table + the five verbs below it). */
|
|
@@ -34,6 +34,8 @@ export declare const ASSISTANT_VERB: {
|
|
|
34
34
|
readonly projectAttachRemote: "assistant_project_attach_remote";
|
|
35
35
|
readonly discoverRepos: "assistant_discover_repos";
|
|
36
36
|
readonly memory: "assistant_memory";
|
|
37
|
+
/** Pull-only FTS search over the archive tier (memory design 2026-11-01 §3.4). */
|
|
38
|
+
readonly memorySearch: "assistant_memory_search";
|
|
37
39
|
readonly skillView: "assistant_skill_view";
|
|
38
40
|
readonly skillManage: "assistant_skill_manage";
|
|
39
41
|
readonly projectNote: "assistant_project_note";
|
|
@@ -45,11 +47,19 @@ export declare const ASSISTANT_VERB: {
|
|
|
45
47
|
readonly decisionAnswer: "assistant_decision_answer";
|
|
46
48
|
/** Register a plain-text question a coordinator put to the owner as a decision item (§5.2). */
|
|
47
49
|
readonly decisionRequest: "assistant_decision_request";
|
|
50
|
+
/** Stop / restart / switch the provider of a coordinator, worker or the assistant session (handoff design 2026-11-01 §4). */
|
|
51
|
+
readonly sessionControl: "assistant_session_control";
|
|
48
52
|
readonly launch: "launch_assistant";
|
|
49
53
|
readonly pendingRelays: "assistant_pending_relays";
|
|
50
54
|
readonly stagedResolve: "assistant_staged_resolve";
|
|
51
55
|
readonly storeAdmin: "assistant_store_admin";
|
|
52
56
|
readonly importSkills: "assistant_import_skills";
|
|
57
|
+
/** Owner skill list (attach/view counts, save proposals, recent skill metrics); reads move no counter. */
|
|
58
|
+
readonly skillsList: "assistant_skills_list";
|
|
59
|
+
/** Owner: what the assistant remembered recently, with undo handles (memory design §3.2). */
|
|
60
|
+
readonly memoryDigest: "assistant_memory_digest";
|
|
61
|
+
/** Owner: reverse one remembered write or one batch (memory design §3.2). Never an assistant tool. */
|
|
62
|
+
readonly memoryUndo: "assistant_memory_undo";
|
|
53
63
|
/** Projects the assistant is following (open relay threads) — list / stop following. */
|
|
54
64
|
readonly threads: "assistant_threads";
|
|
55
65
|
readonly threadClose: "assistant_thread_close";
|
package/dist/index.d.ts
CHANGED
|
@@ -41,6 +41,8 @@ export * from './turn-ipc';
|
|
|
41
41
|
export * from './path-ownership';
|
|
42
42
|
export * from './mission-brief';
|
|
43
43
|
export * from './mission-items';
|
|
44
|
+
export * from './mission-git-state';
|
|
45
|
+
export * from './release';
|
|
44
46
|
export * from './decision-push-relay';
|
|
45
47
|
export * from './keyed-doc-delta';
|
|
46
48
|
export * from './provider-approval';
|
package/dist/index.js
CHANGED
|
@@ -40,6 +40,7 @@ __export(index_exports, {
|
|
|
40
40
|
CANONICAL_MESH_TOOL_NAMES: () => CANONICAL_MESH_TOOL_NAMES,
|
|
41
41
|
CARRY_OVER_MISSION_GOAL: () => CARRY_OVER_MISSION_GOAL,
|
|
42
42
|
CARRY_OVER_MISSION_TITLE: () => CARRY_OVER_MISSION_TITLE,
|
|
43
|
+
CHANGELOG_SECTIONS: () => CHANGELOG_SECTIONS,
|
|
43
44
|
CLAUDE_TUI_REVIEW_PAGE_NOT_FOCUSED_PREFIX: () => CLAUDE_TUI_REVIEW_PAGE_NOT_FOCUSED_PREFIX,
|
|
44
45
|
CLAUDE_TUI_REVIEW_UNCONFIRMED_PREFIX: () => CLAUDE_TUI_REVIEW_UNCONFIRMED_PREFIX,
|
|
45
46
|
CLI_SLOT_RECIPES: () => CLI_SLOT_RECIPES,
|
|
@@ -90,6 +91,8 @@ __export(index_exports, {
|
|
|
90
91
|
MESH_MISSION_STATUSES: () => MESH_MISSION_STATUSES,
|
|
91
92
|
MESH_P2P_SIGNAL_TYPES: () => MESH_P2P_SIGNAL_TYPES,
|
|
92
93
|
MESH_RECORD_PAYLOAD_KEYS: () => MESH_RECORD_PAYLOAD_KEYS,
|
|
94
|
+
MESH_RELEASE_CHANNELS: () => MESH_RELEASE_CHANNELS,
|
|
95
|
+
MESH_RELEASE_STATUSES: () => MESH_RELEASE_STATUSES,
|
|
93
96
|
MESH_SESSION_CLEANUP_MODES: () => MESH_SESSION_CLEANUP_MODES,
|
|
94
97
|
MESH_STATUS_DOC_SPEC: () => MESH_STATUS_DOC_SPEC,
|
|
95
98
|
MESH_TASK_DIFFICULTIES: () => MESH_TASK_DIFFICULTIES,
|
|
@@ -104,15 +107,20 @@ __export(index_exports, {
|
|
|
104
107
|
MISSION_DECISION_ON_DUE: () => MISSION_DECISION_ON_DUE,
|
|
105
108
|
MISSION_DECISION_OPTION_IDS: () => MISSION_DECISION_OPTION_IDS,
|
|
106
109
|
MISSION_DECISION_URGENCIES: () => MISSION_DECISION_URGENCIES,
|
|
110
|
+
MISSION_GIT_STATES: () => MISSION_GIT_STATES,
|
|
107
111
|
MISSION_ITEM_KINDS: () => MISSION_ITEM_KINDS,
|
|
108
112
|
MISSION_ITEM_STATES: () => MISSION_ITEM_STATES,
|
|
109
113
|
MISSION_LIMITS: () => MISSION_LIMITS,
|
|
110
114
|
MISSION_OUTCOMES: () => MISSION_OUTCOMES,
|
|
115
|
+
MISSION_REF_GIT_METHODS: () => MISSION_REF_GIT_METHODS,
|
|
116
|
+
MISSION_REF_GIT_STATUSES: () => MISSION_REF_GIT_STATUSES,
|
|
111
117
|
MISSION_REF_KINDS: () => MISSION_REF_KINDS,
|
|
118
|
+
MISSION_RELEASE_EVENT_TYPES: () => MISSION_RELEASE_EVENT_TYPES,
|
|
112
119
|
MODEL_AXIS_SOURCES: () => MODEL_AXIS_SOURCES,
|
|
113
120
|
MODEL_SELECTION_HISTORY_LIMIT: () => MODEL_SELECTION_HISTORY_LIMIT,
|
|
114
121
|
MeshChunkAssembler: () => MeshChunkAssembler,
|
|
115
122
|
NATIVE_TURN_OUTCOMES: () => NATIVE_TURN_OUTCOMES,
|
|
123
|
+
NEEDS_WORDING_MARKER: () => NEEDS_WORDING_MARKER,
|
|
116
124
|
NOTIFY_KINDS: () => NOTIFY_KINDS,
|
|
117
125
|
NO_PROGRESS_OBSERVED_STATUSES: () => NO_PROGRESS_OBSERVED_STATUSES,
|
|
118
126
|
NPM_UPDATE_TAGS: () => NPM_UPDATE_TAGS,
|
|
@@ -135,7 +143,11 @@ __export(index_exports, {
|
|
|
135
143
|
RELAY_REPROBE_BASE_DELAY_MS: () => RELAY_REPROBE_BASE_DELAY_MS,
|
|
136
144
|
RELAY_REPROBE_JITTER_RATIO: () => RELAY_REPROBE_JITTER_RATIO,
|
|
137
145
|
RELAY_REPROBE_MAX_DELAY_MS: () => RELAY_REPROBE_MAX_DELAY_MS,
|
|
146
|
+
RELEASE_ACTORS: () => RELEASE_ACTORS,
|
|
138
147
|
RELEASE_CHANNELS: () => RELEASE_CHANNELS,
|
|
148
|
+
RELEASE_EVENT_TYPES: () => RELEASE_EVENT_TYPES,
|
|
149
|
+
RELEASE_LIMITS: () => RELEASE_LIMITS,
|
|
150
|
+
RELEASE_MEMBER_STATES: () => RELEASE_MEMBER_STATES,
|
|
139
151
|
REMOVED_MESH_TOOLS: () => REMOVED_MESH_TOOLS,
|
|
140
152
|
RETIRED_MESH_TOOLS: () => RETIRED_MESH_TOOLS,
|
|
141
153
|
RelayReprobeScheduler: () => RelayReprobeScheduler,
|
|
@@ -182,12 +194,15 @@ __export(index_exports, {
|
|
|
182
194
|
WORKER_REPORT_OUTCOMES: () => WORKER_REPORT_OUTCOMES,
|
|
183
195
|
WORKER_REPORT_SUMMARY_MAX_CHARS: () => WORKER_REPORT_SUMMARY_MAX_CHARS,
|
|
184
196
|
WORKER_TOOLS: () => WORKER_TOOLS,
|
|
197
|
+
aggregateMissionGitState: () => aggregateMissionGitState,
|
|
185
198
|
appendWorkerProtocolFooter: () => appendWorkerProtocolFooter,
|
|
186
199
|
argsCarryStatusProbeMarker: () => argsCarryStatusProbeMarker,
|
|
187
200
|
assessQuotaFreshness: () => assessQuotaFreshness,
|
|
188
201
|
boundEventPayload: () => boundEventPayload,
|
|
189
202
|
buildSlotProposal: () => buildSlotProposal,
|
|
190
203
|
canonicalDaemonId: () => canonicalDaemonId,
|
|
204
|
+
changelogMissionMarker: () => changelogMissionMarker,
|
|
205
|
+
classifyChangelogSection: () => classifyChangelogSection,
|
|
191
206
|
classifySessionStatus: () => classifySessionStatus,
|
|
192
207
|
compareDashboardWireVersion: () => compareDashboardWireVersion,
|
|
193
208
|
compareSemver: () => compareSemver,
|
|
@@ -304,6 +319,7 @@ __export(index_exports, {
|
|
|
304
319
|
isMeshMissionStatusValue: () => isMeshMissionStatusValue,
|
|
305
320
|
isMeshP2PSignalType: () => isMeshP2PSignalType,
|
|
306
321
|
isMeshRecordPayload: () => isMeshRecordPayload,
|
|
322
|
+
isMeshReleaseChannel: () => isMeshReleaseChannel,
|
|
307
323
|
isMeshTaskDifficulty: () => isMeshTaskDifficulty,
|
|
308
324
|
isMeshTaskMode: () => isMeshTaskMode,
|
|
309
325
|
isMeshTaskPriority: () => isMeshTaskPriority,
|
|
@@ -312,6 +328,7 @@ __export(index_exports, {
|
|
|
312
328
|
isMeshTopicEntry: () => isMeshTopicEntry,
|
|
313
329
|
isMessageId: () => isMessageId,
|
|
314
330
|
isMissionOutcome: () => isMissionOutcome,
|
|
331
|
+
isMissionRefContained: () => isMissionRefContained,
|
|
315
332
|
isMissionUpsertResponse: () => isMissionUpsertResponse,
|
|
316
333
|
isModelAxisSource: () => isModelAxisSource,
|
|
317
334
|
isNativeMarkerRef: () => isNativeMarkerRef,
|
|
@@ -325,6 +342,7 @@ __export(index_exports, {
|
|
|
325
342
|
isRawDaemonDoId: () => isRawDaemonDoId,
|
|
326
343
|
isReadyStatus: () => isReadyStatus,
|
|
327
344
|
isRecord: () => isRecord,
|
|
345
|
+
isReleaseStatus: () => isReleaseStatus,
|
|
328
346
|
isSendPolicy: () => isSendPolicy,
|
|
329
347
|
isSendPolicyMode: () => isSendPolicyMode,
|
|
330
348
|
isSendRefusal: () => isSendRefusal,
|
|
@@ -351,6 +369,7 @@ __export(index_exports, {
|
|
|
351
369
|
isWorkingStatus: () => isWorkingStatus,
|
|
352
370
|
joinRepoPath: () => joinRepoPath,
|
|
353
371
|
launchModelSelectionValue: () => launchModelSelectionValue,
|
|
372
|
+
lintChangelogText: () => lintChangelogText,
|
|
354
373
|
machineCoreFromDaemonId: () => machineCoreFromDaemonId,
|
|
355
374
|
makeTypeGuard: () => makeTypeGuard,
|
|
356
375
|
measureWorstCaseChunkEnvelopeBytes: () => measureWorstCaseChunkEnvelopeBytes,
|
|
@@ -1182,6 +1201,7 @@ var CANONICAL_MESH_TOOL_NAMES = [
|
|
|
1182
1201
|
"mesh_enqueue_task",
|
|
1183
1202
|
"mesh_view_queue",
|
|
1184
1203
|
"mesh_queue_cancel",
|
|
1204
|
+
"mesh_direct_cancel",
|
|
1185
1205
|
"mesh_queue_requeue",
|
|
1186
1206
|
"mesh_queue_revise",
|
|
1187
1207
|
"mesh_send_task",
|
|
@@ -1204,6 +1224,7 @@ var CANONICAL_MESH_TOOL_NAMES = [
|
|
|
1204
1224
|
"mesh_attach_remote",
|
|
1205
1225
|
"mesh_clone_node",
|
|
1206
1226
|
"mesh_remove_node",
|
|
1227
|
+
"mesh_retry_node_bootstrap",
|
|
1207
1228
|
"mesh_cleanup_worktree_nodes",
|
|
1208
1229
|
"mesh_refine_node",
|
|
1209
1230
|
"mesh_refine_batch",
|
|
@@ -1220,6 +1241,12 @@ var CANONICAL_MESH_TOOL_NAMES = [
|
|
|
1220
1241
|
"mesh_reconcile_ledger",
|
|
1221
1242
|
"mesh_mission_upsert",
|
|
1222
1243
|
"mesh_mission_list",
|
|
1244
|
+
"mesh_mission_git_eval",
|
|
1245
|
+
"mesh_release_upsert",
|
|
1246
|
+
"mesh_release_scope",
|
|
1247
|
+
"mesh_release_list",
|
|
1248
|
+
"mesh_release_record_deploy",
|
|
1249
|
+
"mesh_release_changelog_draft",
|
|
1223
1250
|
"mesh_review_inbox",
|
|
1224
1251
|
"mesh_node_slots",
|
|
1225
1252
|
"driver_list",
|
|
@@ -2224,6 +2251,7 @@ var ASSISTANT_TOOLS = [
|
|
|
2224
2251
|
"project_attach_remote",
|
|
2225
2252
|
"discover_repos",
|
|
2226
2253
|
"memory",
|
|
2254
|
+
"memory_search",
|
|
2227
2255
|
"skill_view",
|
|
2228
2256
|
"skill_manage",
|
|
2229
2257
|
"project_note",
|
|
@@ -2234,7 +2262,8 @@ var ASSISTANT_TOOLS = [
|
|
|
2234
2262
|
"artifact_list",
|
|
2235
2263
|
"artifact_read",
|
|
2236
2264
|
"decision_answer",
|
|
2237
|
-
"decision_request"
|
|
2265
|
+
"decision_request",
|
|
2266
|
+
"session_control"
|
|
2238
2267
|
];
|
|
2239
2268
|
var ASSISTANT_TOOL_SET = new Set(ASSISTANT_TOOLS);
|
|
2240
2269
|
function isAssistantTool(value) {
|
|
@@ -2257,6 +2286,8 @@ var ASSISTANT_VERB = {
|
|
|
2257
2286
|
projectAttachRemote: "assistant_project_attach_remote",
|
|
2258
2287
|
discoverRepos: "assistant_discover_repos",
|
|
2259
2288
|
memory: "assistant_memory",
|
|
2289
|
+
/** Pull-only FTS search over the archive tier (memory design 2026-11-01 §3.4). */
|
|
2290
|
+
memorySearch: "assistant_memory_search",
|
|
2260
2291
|
skillView: "assistant_skill_view",
|
|
2261
2292
|
skillManage: "assistant_skill_manage",
|
|
2262
2293
|
projectNote: "assistant_project_note",
|
|
@@ -2268,6 +2299,8 @@ var ASSISTANT_VERB = {
|
|
|
2268
2299
|
decisionAnswer: "assistant_decision_answer",
|
|
2269
2300
|
/** Register a plain-text question a coordinator put to the owner as a decision item (§5.2). */
|
|
2270
2301
|
decisionRequest: "assistant_decision_request",
|
|
2302
|
+
/** Stop / restart / switch the provider of a coordinator, worker or the assistant session (handoff design 2026-11-01 §4). */
|
|
2303
|
+
sessionControl: "assistant_session_control",
|
|
2271
2304
|
// assistant-side daemon verbs without a tool of the same name
|
|
2272
2305
|
launch: "launch_assistant",
|
|
2273
2306
|
pendingRelays: "assistant_pending_relays",
|
|
@@ -2275,6 +2308,12 @@ var ASSISTANT_VERB = {
|
|
|
2275
2308
|
stagedResolve: "assistant_staged_resolve",
|
|
2276
2309
|
storeAdmin: "assistant_store_admin",
|
|
2277
2310
|
importSkills: "assistant_import_skills",
|
|
2311
|
+
/** Owner skill list (attach/view counts, save proposals, recent skill metrics); reads move no counter. */
|
|
2312
|
+
skillsList: "assistant_skills_list",
|
|
2313
|
+
/** Owner: what the assistant remembered recently, with undo handles (memory design §3.2). */
|
|
2314
|
+
memoryDigest: "assistant_memory_digest",
|
|
2315
|
+
/** Owner: reverse one remembered write or one batch (memory design §3.2). Never an assistant tool. */
|
|
2316
|
+
memoryUndo: "assistant_memory_undo",
|
|
2278
2317
|
/** Projects the assistant is following (open relay threads) — list / stop following. */
|
|
2279
2318
|
threads: "assistant_threads",
|
|
2280
2319
|
threadClose: "assistant_thread_close"
|
|
@@ -2293,6 +2332,7 @@ var ASSISTANT_TOOL_VERBS = {
|
|
|
2293
2332
|
project_attach_remote: ASSISTANT_VERB.projectAttachRemote,
|
|
2294
2333
|
discover_repos: ASSISTANT_VERB.discoverRepos,
|
|
2295
2334
|
memory: ASSISTANT_VERB.memory,
|
|
2335
|
+
memory_search: ASSISTANT_VERB.memorySearch,
|
|
2296
2336
|
skill_view: ASSISTANT_VERB.skillView,
|
|
2297
2337
|
skill_manage: ASSISTANT_VERB.skillManage,
|
|
2298
2338
|
project_note: ASSISTANT_VERB.projectNote,
|
|
@@ -2301,18 +2341,23 @@ var ASSISTANT_TOOL_VERBS = {
|
|
|
2301
2341
|
artifact_list: ASSISTANT_VERB.artifactList,
|
|
2302
2342
|
artifact_read: ASSISTANT_VERB.artifactRead,
|
|
2303
2343
|
decision_answer: ASSISTANT_VERB.decisionAnswer,
|
|
2304
|
-
decision_request: ASSISTANT_VERB.decisionRequest
|
|
2344
|
+
decision_request: ASSISTANT_VERB.decisionRequest,
|
|
2345
|
+
session_control: ASSISTANT_VERB.sessionControl
|
|
2305
2346
|
};
|
|
2306
|
-
var ASSISTANT_WRITE_TOOLS = ["project_watch", "assistant_action", "memory", "skill_manage", "project_note", "project_send", "project_add", "project_attach_remote", "launch_defaults_set", "decision_answer", "decision_request"];
|
|
2347
|
+
var ASSISTANT_WRITE_TOOLS = ["project_watch", "assistant_action", "memory", "skill_manage", "project_note", "project_send", "project_add", "project_attach_remote", "launch_defaults_set", "decision_answer", "decision_request", "session_control"];
|
|
2307
2348
|
var ASSISTANT_OWNER_VERBS = [
|
|
2308
2349
|
ASSISTANT_VERB.executionSettings,
|
|
2309
2350
|
ASSISTANT_VERB.stagedResolve,
|
|
2310
2351
|
ASSISTANT_VERB.storeAdmin,
|
|
2311
2352
|
ASSISTANT_VERB.importSkills,
|
|
2353
|
+
ASSISTANT_VERB.skillsList,
|
|
2354
|
+
ASSISTANT_VERB.memoryDigest,
|
|
2355
|
+
ASSISTANT_VERB.memoryUndo,
|
|
2312
2356
|
ASSISTANT_VERB.threadClose
|
|
2313
2357
|
];
|
|
2314
2358
|
var ASSISTANT_REVIEW_TURN_VERBS = [
|
|
2315
2359
|
ASSISTANT_VERB.memory,
|
|
2360
|
+
ASSISTANT_VERB.memorySearch,
|
|
2316
2361
|
ASSISTANT_VERB.skillView,
|
|
2317
2362
|
ASSISTANT_VERB.skillManage,
|
|
2318
2363
|
ASSISTANT_VERB.projectNote
|
|
@@ -2918,6 +2963,7 @@ function parseModelSelection(raw) {
|
|
|
2918
2963
|
const current = readString(record2.current);
|
|
2919
2964
|
const observed = readString(record2.observed);
|
|
2920
2965
|
const observedAt = readFiniteNumber(record2.observedAt);
|
|
2966
|
+
const fallback = record2.fallback === true;
|
|
2921
2967
|
return {
|
|
2922
2968
|
source: isModelAxisSource(record2.source) ? record2.source : "unspecified",
|
|
2923
2969
|
...requested ? { requested } : {},
|
|
@@ -2926,6 +2972,7 @@ function parseModelSelection(raw) {
|
|
|
2926
2972
|
...current ? { current } : {},
|
|
2927
2973
|
...observed ? { observed } : {},
|
|
2928
2974
|
...observedAt !== void 0 ? { observedAt } : {},
|
|
2975
|
+
...fallback ? { fallback } : {},
|
|
2929
2976
|
history: history.slice(-MODEL_SELECTION_HISTORY_LIMIT)
|
|
2930
2977
|
};
|
|
2931
2978
|
}
|
|
@@ -3238,13 +3285,13 @@ function isMissionBriefWire(value) {
|
|
|
3238
3285
|
}
|
|
3239
3286
|
return true;
|
|
3240
3287
|
}
|
|
3241
|
-
var STRUCTURED_MISSION_KEYS = ["summary", "outcome", "outcomeReason", "version", "carryOver", "openItems"];
|
|
3288
|
+
var STRUCTURED_MISSION_KEYS = ["summary", "releaseNote", "outcome", "outcomeReason", "version", "carryOver", "openItems"];
|
|
3242
3289
|
function isOpenItemCountsWire(value) {
|
|
3243
3290
|
if (!isRecord(value) || !hasOnlyKeys2(value, ["remaining", "live_check", "decision", "evidence"])) return false;
|
|
3244
3291
|
return ["remaining", "live_check", "decision", "evidence"].every((k) => isNonNegativeInt(value[k]));
|
|
3245
3292
|
}
|
|
3246
3293
|
function isStructuredMissionFields(value) {
|
|
3247
|
-
for (const k of ["summary", "outcome", "outcomeReason"]) {
|
|
3294
|
+
for (const k of ["summary", "releaseNote", "outcome", "outcomeReason"]) {
|
|
3248
3295
|
if (value[k] !== void 0 && typeof value[k] !== "string") return false;
|
|
3249
3296
|
}
|
|
3250
3297
|
if (value.version !== void 0 && !isNonNegativeInt(value.version)) return false;
|
|
@@ -3262,7 +3309,7 @@ function isMeshMissionRecordWire(value) {
|
|
|
3262
3309
|
return true;
|
|
3263
3310
|
}
|
|
3264
3311
|
function isMissionUpsertRequest(value) {
|
|
3265
|
-
if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "id", "title", "goal", "status", "brief", "structured", "summary", "outcome", "outcomeReason", "carryOverTo", "toCarryOver", "itemsAdd", "itemsUpdate"])) return false;
|
|
3312
|
+
if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "id", "title", "goal", "status", "brief", "structured", "summary", "releaseNote", "outcome", "outcomeReason", "carryOverTo", "toCarryOver", "itemsAdd", "itemsUpdate"])) return false;
|
|
3266
3313
|
if (value.v !== TURN_IPC_PROTOCOL_VERSION) return false;
|
|
3267
3314
|
if (!isEvidenceIdentifier(value.meshId)) return false;
|
|
3268
3315
|
if (value.id !== void 0 && !isEvidenceIdentifier(value.id)) return false;
|
|
@@ -3270,7 +3317,7 @@ function isMissionUpsertRequest(value) {
|
|
|
3270
3317
|
if (value.title.trim().length === 0 && value.toCarryOver !== true && value.id === void 0) return false;
|
|
3271
3318
|
if (value.structured !== void 0 && typeof value.structured !== "boolean") return false;
|
|
3272
3319
|
if (value.toCarryOver !== void 0 && typeof value.toCarryOver !== "boolean") return false;
|
|
3273
|
-
for (const k of ["summary", "outcome", "outcomeReason"]) {
|
|
3320
|
+
for (const k of ["summary", "releaseNote", "outcome", "outcomeReason"]) {
|
|
3274
3321
|
if (value[k] !== void 0 && typeof value[k] !== "string") return false;
|
|
3275
3322
|
}
|
|
3276
3323
|
if (value.carryOverTo !== void 0 && !isEvidenceIdentifier(value.carryOverTo)) return false;
|
|
@@ -3900,7 +3947,7 @@ function touchedFilesOutsideOwnership(touched, owned) {
|
|
|
3900
3947
|
|
|
3901
3948
|
// src/mission-items.ts
|
|
3902
3949
|
var MISSION_ITEM_KINDS = ["remaining", "live_check", "decision", "evidence"];
|
|
3903
|
-
var MISSION_ITEM_STATES = ["open", "done", "dropped", "moved", "answered", "expired", "withdrawn", "superseded"];
|
|
3950
|
+
var MISSION_ITEM_STATES = ["open", "done", "failed", "dropped", "moved", "answered", "expired", "withdrawn", "superseded"];
|
|
3904
3951
|
var COORDINATOR_SETTABLE_ITEM_STATES = {
|
|
3905
3952
|
remaining: ["open", "done", "dropped"],
|
|
3906
3953
|
live_check: ["open", "done", "dropped"],
|
|
@@ -4170,6 +4217,81 @@ function normalizeReportCommits(value) {
|
|
|
4170
4217
|
return out;
|
|
4171
4218
|
}
|
|
4172
4219
|
|
|
4220
|
+
// src/mission-git-state.ts
|
|
4221
|
+
var MISSION_REF_GIT_STATUSES = ["contained_ancestor", "contained_patch_equivalent", "not_contained", "unknown"];
|
|
4222
|
+
var MISSION_REF_GIT_METHODS = ["ancestry", "cherry", "residual_patch"];
|
|
4223
|
+
var MISSION_GIT_STATES = ["no_refs", "landed", "partial", "not_landed", "unknown"];
|
|
4224
|
+
function isMissionRefContained(status) {
|
|
4225
|
+
return status === "contained_ancestor" || status === "contained_patch_equivalent";
|
|
4226
|
+
}
|
|
4227
|
+
function aggregateMissionGitState(statuses) {
|
|
4228
|
+
const total = statuses.length;
|
|
4229
|
+
const contained = statuses.filter(isMissionRefContained).length;
|
|
4230
|
+
const notContained = statuses.filter((s) => s === "not_contained").length;
|
|
4231
|
+
const unknown = statuses.filter((s) => s === "unknown").length;
|
|
4232
|
+
const counts = { total, contained, notContained, unknown };
|
|
4233
|
+
if (total === 0) return { state: "no_refs", partialUnknown: false, counts };
|
|
4234
|
+
if (contained === total) return { state: "landed", partialUnknown: false, counts };
|
|
4235
|
+
if (contained > 0) return { state: "partial", partialUnknown: unknown > 0, counts };
|
|
4236
|
+
if (notContained === total) return { state: "not_landed", partialUnknown: false, counts };
|
|
4237
|
+
return { state: "unknown", partialUnknown: false, counts };
|
|
4238
|
+
}
|
|
4239
|
+
|
|
4240
|
+
// src/release.ts
|
|
4241
|
+
var MESH_RELEASE_CHANNELS = ["preview", "stable"];
|
|
4242
|
+
function isMeshReleaseChannel(value) {
|
|
4243
|
+
return typeof value === "string" && MESH_RELEASE_CHANNELS.includes(value);
|
|
4244
|
+
}
|
|
4245
|
+
var MESH_RELEASE_STATUSES = ["planned", "frozen", "deployed", "verified", "superseded", "cancelled"];
|
|
4246
|
+
function isReleaseStatus(value) {
|
|
4247
|
+
return typeof value === "string" && MESH_RELEASE_STATUSES.includes(value);
|
|
4248
|
+
}
|
|
4249
|
+
var RELEASE_MEMBER_STATES = ["member", "moved_out", "removed"];
|
|
4250
|
+
var RELEASE_ACTORS = ["coordinator", "owner", "assistant", "script"];
|
|
4251
|
+
var RELEASE_EVENT_TYPES = [
|
|
4252
|
+
"created",
|
|
4253
|
+
"status_changed",
|
|
4254
|
+
"scope_added",
|
|
4255
|
+
"scope_moved",
|
|
4256
|
+
"scope_removed",
|
|
4257
|
+
"deploy_recorded",
|
|
4258
|
+
"changelog_drafted",
|
|
4259
|
+
"changelog_applied"
|
|
4260
|
+
];
|
|
4261
|
+
var MISSION_RELEASE_EVENT_TYPES = ["release_attached", "release_moved", "release_detached"];
|
|
4262
|
+
var RELEASE_LIMITS = {
|
|
4263
|
+
name: 80,
|
|
4264
|
+
note: 500,
|
|
4265
|
+
/** `mesh_missions.release_note`: one user/operator-visible sentence. */
|
|
4266
|
+
releaseNote: 400,
|
|
4267
|
+
missionsPerCall: 100,
|
|
4268
|
+
changelogEntries: 300
|
|
4269
|
+
};
|
|
4270
|
+
var CHANGELOG_SECTIONS = ["Added", "Fixed", "Changed"];
|
|
4271
|
+
var NEEDS_WORDING_MARKER = "[needs user-facing wording]";
|
|
4272
|
+
function changelogMissionMarker(missionId) {
|
|
4273
|
+
return `<!-- m:${missionId.slice(0, 8)} -->`;
|
|
4274
|
+
}
|
|
4275
|
+
function classifyChangelogSection(text, hint) {
|
|
4276
|
+
const m = /^\s*\[(added|fixed|changed)\]\s*/i.exec(text);
|
|
4277
|
+
if (m) {
|
|
4278
|
+
const key = m[1].toLowerCase();
|
|
4279
|
+
return { section: key === "added" ? "Added" : key === "fixed" ? "Fixed" : "Changed", text: text.slice(m[0].length).trim() };
|
|
4280
|
+
}
|
|
4281
|
+
const probe = `${hint ?? ""} ${text}`.toLowerCase();
|
|
4282
|
+
if (/\b(fix|fixes|fixed|bug|regression|crash|error)\b|오류|결함|버그|수정/.test(probe)) return { section: "Fixed", text };
|
|
4283
|
+
if (/\b(add|adds|added|new|introduc\w*|support\w*)\b|신규|추가/.test(probe)) return { section: "Added", text };
|
|
4284
|
+
return { section: "Changed", text };
|
|
4285
|
+
}
|
|
4286
|
+
function lintChangelogText(text) {
|
|
4287
|
+
const out = [];
|
|
4288
|
+
if (/\bwave[\s-]*\d+/i.test(text) || /웨이브\s*\d+/.test(text)) out.push("mentions an internal wave number");
|
|
4289
|
+
if (/\brc[.\s-]?\d+\b/i.test(text)) out.push("mentions an internal rc number");
|
|
4290
|
+
if (/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/i.test(text) || /\bmi_[0-9a-f]{12}\b/.test(text) || /\brel_[0-9a-f]{12}\b/.test(text)) out.push("contains an internal id");
|
|
4291
|
+
if (/\bmission\b/i.test(text)) out.push('mentions "mission" (internal vocabulary)');
|
|
4292
|
+
return out;
|
|
4293
|
+
}
|
|
4294
|
+
|
|
4173
4295
|
// src/decision-push-relay.ts
|
|
4174
4296
|
var DECISION_PUSH_RELAY_COMMAND = "mission_decision_push_relay_answer";
|
|
4175
4297
|
var DECISION_PUSH_RELAY_SOURCE = "push_relay";
|
|
@@ -4638,6 +4760,7 @@ var RelayReprobeScheduler = class {
|
|
|
4638
4760
|
CANONICAL_MESH_TOOL_NAMES,
|
|
4639
4761
|
CARRY_OVER_MISSION_GOAL,
|
|
4640
4762
|
CARRY_OVER_MISSION_TITLE,
|
|
4763
|
+
CHANGELOG_SECTIONS,
|
|
4641
4764
|
CLAUDE_TUI_REVIEW_PAGE_NOT_FOCUSED_PREFIX,
|
|
4642
4765
|
CLAUDE_TUI_REVIEW_UNCONFIRMED_PREFIX,
|
|
4643
4766
|
CLI_SLOT_RECIPES,
|
|
@@ -4688,6 +4811,8 @@ var RelayReprobeScheduler = class {
|
|
|
4688
4811
|
MESH_MISSION_STATUSES,
|
|
4689
4812
|
MESH_P2P_SIGNAL_TYPES,
|
|
4690
4813
|
MESH_RECORD_PAYLOAD_KEYS,
|
|
4814
|
+
MESH_RELEASE_CHANNELS,
|
|
4815
|
+
MESH_RELEASE_STATUSES,
|
|
4691
4816
|
MESH_SESSION_CLEANUP_MODES,
|
|
4692
4817
|
MESH_STATUS_DOC_SPEC,
|
|
4693
4818
|
MESH_TASK_DIFFICULTIES,
|
|
@@ -4702,15 +4827,20 @@ var RelayReprobeScheduler = class {
|
|
|
4702
4827
|
MISSION_DECISION_ON_DUE,
|
|
4703
4828
|
MISSION_DECISION_OPTION_IDS,
|
|
4704
4829
|
MISSION_DECISION_URGENCIES,
|
|
4830
|
+
MISSION_GIT_STATES,
|
|
4705
4831
|
MISSION_ITEM_KINDS,
|
|
4706
4832
|
MISSION_ITEM_STATES,
|
|
4707
4833
|
MISSION_LIMITS,
|
|
4708
4834
|
MISSION_OUTCOMES,
|
|
4835
|
+
MISSION_REF_GIT_METHODS,
|
|
4836
|
+
MISSION_REF_GIT_STATUSES,
|
|
4709
4837
|
MISSION_REF_KINDS,
|
|
4838
|
+
MISSION_RELEASE_EVENT_TYPES,
|
|
4710
4839
|
MODEL_AXIS_SOURCES,
|
|
4711
4840
|
MODEL_SELECTION_HISTORY_LIMIT,
|
|
4712
4841
|
MeshChunkAssembler,
|
|
4713
4842
|
NATIVE_TURN_OUTCOMES,
|
|
4843
|
+
NEEDS_WORDING_MARKER,
|
|
4714
4844
|
NOTIFY_KINDS,
|
|
4715
4845
|
NO_PROGRESS_OBSERVED_STATUSES,
|
|
4716
4846
|
NPM_UPDATE_TAGS,
|
|
@@ -4733,7 +4863,11 @@ var RelayReprobeScheduler = class {
|
|
|
4733
4863
|
RELAY_REPROBE_BASE_DELAY_MS,
|
|
4734
4864
|
RELAY_REPROBE_JITTER_RATIO,
|
|
4735
4865
|
RELAY_REPROBE_MAX_DELAY_MS,
|
|
4866
|
+
RELEASE_ACTORS,
|
|
4736
4867
|
RELEASE_CHANNELS,
|
|
4868
|
+
RELEASE_EVENT_TYPES,
|
|
4869
|
+
RELEASE_LIMITS,
|
|
4870
|
+
RELEASE_MEMBER_STATES,
|
|
4737
4871
|
REMOVED_MESH_TOOLS,
|
|
4738
4872
|
RETIRED_MESH_TOOLS,
|
|
4739
4873
|
RelayReprobeScheduler,
|
|
@@ -4780,12 +4914,15 @@ var RelayReprobeScheduler = class {
|
|
|
4780
4914
|
WORKER_REPORT_OUTCOMES,
|
|
4781
4915
|
WORKER_REPORT_SUMMARY_MAX_CHARS,
|
|
4782
4916
|
WORKER_TOOLS,
|
|
4917
|
+
aggregateMissionGitState,
|
|
4783
4918
|
appendWorkerProtocolFooter,
|
|
4784
4919
|
argsCarryStatusProbeMarker,
|
|
4785
4920
|
assessQuotaFreshness,
|
|
4786
4921
|
boundEventPayload,
|
|
4787
4922
|
buildSlotProposal,
|
|
4788
4923
|
canonicalDaemonId,
|
|
4924
|
+
changelogMissionMarker,
|
|
4925
|
+
classifyChangelogSection,
|
|
4789
4926
|
classifySessionStatus,
|
|
4790
4927
|
compareDashboardWireVersion,
|
|
4791
4928
|
compareSemver,
|
|
@@ -4902,6 +5039,7 @@ var RelayReprobeScheduler = class {
|
|
|
4902
5039
|
isMeshMissionStatusValue,
|
|
4903
5040
|
isMeshP2PSignalType,
|
|
4904
5041
|
isMeshRecordPayload,
|
|
5042
|
+
isMeshReleaseChannel,
|
|
4905
5043
|
isMeshTaskDifficulty,
|
|
4906
5044
|
isMeshTaskMode,
|
|
4907
5045
|
isMeshTaskPriority,
|
|
@@ -4910,6 +5048,7 @@ var RelayReprobeScheduler = class {
|
|
|
4910
5048
|
isMeshTopicEntry,
|
|
4911
5049
|
isMessageId,
|
|
4912
5050
|
isMissionOutcome,
|
|
5051
|
+
isMissionRefContained,
|
|
4913
5052
|
isMissionUpsertResponse,
|
|
4914
5053
|
isModelAxisSource,
|
|
4915
5054
|
isNativeMarkerRef,
|
|
@@ -4923,6 +5062,7 @@ var RelayReprobeScheduler = class {
|
|
|
4923
5062
|
isRawDaemonDoId,
|
|
4924
5063
|
isReadyStatus,
|
|
4925
5064
|
isRecord,
|
|
5065
|
+
isReleaseStatus,
|
|
4926
5066
|
isSendPolicy,
|
|
4927
5067
|
isSendPolicyMode,
|
|
4928
5068
|
isSendRefusal,
|
|
@@ -4949,6 +5089,7 @@ var RelayReprobeScheduler = class {
|
|
|
4949
5089
|
isWorkingStatus,
|
|
4950
5090
|
joinRepoPath,
|
|
4951
5091
|
launchModelSelectionValue,
|
|
5092
|
+
lintChangelogText,
|
|
4952
5093
|
machineCoreFromDaemonId,
|
|
4953
5094
|
makeTypeGuard,
|
|
4954
5095
|
measureWorstCaseChunkEnvelopeBytes,
|