@adhdev/mesh-shared 1.0.82-rc.36 → 1.0.82-rc.38
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 +147 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +128 -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 +34 -0
- package/dist/release.d.ts +90 -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 +34 -0
- package/src/release.ts +121 -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
|
|
@@ -3240,13 +3285,13 @@ function isMissionBriefWire(value) {
|
|
|
3240
3285
|
}
|
|
3241
3286
|
return true;
|
|
3242
3287
|
}
|
|
3243
|
-
var STRUCTURED_MISSION_KEYS = ["summary", "outcome", "outcomeReason", "version", "carryOver", "openItems"];
|
|
3288
|
+
var STRUCTURED_MISSION_KEYS = ["summary", "releaseNote", "outcome", "outcomeReason", "version", "carryOver", "openItems"];
|
|
3244
3289
|
function isOpenItemCountsWire(value) {
|
|
3245
3290
|
if (!isRecord(value) || !hasOnlyKeys2(value, ["remaining", "live_check", "decision", "evidence"])) return false;
|
|
3246
3291
|
return ["remaining", "live_check", "decision", "evidence"].every((k) => isNonNegativeInt(value[k]));
|
|
3247
3292
|
}
|
|
3248
3293
|
function isStructuredMissionFields(value) {
|
|
3249
|
-
for (const k of ["summary", "outcome", "outcomeReason"]) {
|
|
3294
|
+
for (const k of ["summary", "releaseNote", "outcome", "outcomeReason"]) {
|
|
3250
3295
|
if (value[k] !== void 0 && typeof value[k] !== "string") return false;
|
|
3251
3296
|
}
|
|
3252
3297
|
if (value.version !== void 0 && !isNonNegativeInt(value.version)) return false;
|
|
@@ -3264,7 +3309,7 @@ function isMeshMissionRecordWire(value) {
|
|
|
3264
3309
|
return true;
|
|
3265
3310
|
}
|
|
3266
3311
|
function isMissionUpsertRequest(value) {
|
|
3267
|
-
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;
|
|
3268
3313
|
if (value.v !== TURN_IPC_PROTOCOL_VERSION) return false;
|
|
3269
3314
|
if (!isEvidenceIdentifier(value.meshId)) return false;
|
|
3270
3315
|
if (value.id !== void 0 && !isEvidenceIdentifier(value.id)) return false;
|
|
@@ -3272,7 +3317,7 @@ function isMissionUpsertRequest(value) {
|
|
|
3272
3317
|
if (value.title.trim().length === 0 && value.toCarryOver !== true && value.id === void 0) return false;
|
|
3273
3318
|
if (value.structured !== void 0 && typeof value.structured !== "boolean") return false;
|
|
3274
3319
|
if (value.toCarryOver !== void 0 && typeof value.toCarryOver !== "boolean") return false;
|
|
3275
|
-
for (const k of ["summary", "outcome", "outcomeReason"]) {
|
|
3320
|
+
for (const k of ["summary", "releaseNote", "outcome", "outcomeReason"]) {
|
|
3276
3321
|
if (value[k] !== void 0 && typeof value[k] !== "string") return false;
|
|
3277
3322
|
}
|
|
3278
3323
|
if (value.carryOverTo !== void 0 && !isEvidenceIdentifier(value.carryOverTo)) return false;
|
|
@@ -3902,7 +3947,7 @@ function touchedFilesOutsideOwnership(touched, owned) {
|
|
|
3902
3947
|
|
|
3903
3948
|
// src/mission-items.ts
|
|
3904
3949
|
var MISSION_ITEM_KINDS = ["remaining", "live_check", "decision", "evidence"];
|
|
3905
|
-
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"];
|
|
3906
3951
|
var COORDINATOR_SETTABLE_ITEM_STATES = {
|
|
3907
3952
|
remaining: ["open", "done", "dropped"],
|
|
3908
3953
|
live_check: ["open", "done", "dropped"],
|
|
@@ -4172,6 +4217,81 @@ function normalizeReportCommits(value) {
|
|
|
4172
4217
|
return out;
|
|
4173
4218
|
}
|
|
4174
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
|
+
|
|
4175
4295
|
// src/decision-push-relay.ts
|
|
4176
4296
|
var DECISION_PUSH_RELAY_COMMAND = "mission_decision_push_relay_answer";
|
|
4177
4297
|
var DECISION_PUSH_RELAY_SOURCE = "push_relay";
|
|
@@ -4640,6 +4760,7 @@ var RelayReprobeScheduler = class {
|
|
|
4640
4760
|
CANONICAL_MESH_TOOL_NAMES,
|
|
4641
4761
|
CARRY_OVER_MISSION_GOAL,
|
|
4642
4762
|
CARRY_OVER_MISSION_TITLE,
|
|
4763
|
+
CHANGELOG_SECTIONS,
|
|
4643
4764
|
CLAUDE_TUI_REVIEW_PAGE_NOT_FOCUSED_PREFIX,
|
|
4644
4765
|
CLAUDE_TUI_REVIEW_UNCONFIRMED_PREFIX,
|
|
4645
4766
|
CLI_SLOT_RECIPES,
|
|
@@ -4690,6 +4811,8 @@ var RelayReprobeScheduler = class {
|
|
|
4690
4811
|
MESH_MISSION_STATUSES,
|
|
4691
4812
|
MESH_P2P_SIGNAL_TYPES,
|
|
4692
4813
|
MESH_RECORD_PAYLOAD_KEYS,
|
|
4814
|
+
MESH_RELEASE_CHANNELS,
|
|
4815
|
+
MESH_RELEASE_STATUSES,
|
|
4693
4816
|
MESH_SESSION_CLEANUP_MODES,
|
|
4694
4817
|
MESH_STATUS_DOC_SPEC,
|
|
4695
4818
|
MESH_TASK_DIFFICULTIES,
|
|
@@ -4704,15 +4827,20 @@ var RelayReprobeScheduler = class {
|
|
|
4704
4827
|
MISSION_DECISION_ON_DUE,
|
|
4705
4828
|
MISSION_DECISION_OPTION_IDS,
|
|
4706
4829
|
MISSION_DECISION_URGENCIES,
|
|
4830
|
+
MISSION_GIT_STATES,
|
|
4707
4831
|
MISSION_ITEM_KINDS,
|
|
4708
4832
|
MISSION_ITEM_STATES,
|
|
4709
4833
|
MISSION_LIMITS,
|
|
4710
4834
|
MISSION_OUTCOMES,
|
|
4835
|
+
MISSION_REF_GIT_METHODS,
|
|
4836
|
+
MISSION_REF_GIT_STATUSES,
|
|
4711
4837
|
MISSION_REF_KINDS,
|
|
4838
|
+
MISSION_RELEASE_EVENT_TYPES,
|
|
4712
4839
|
MODEL_AXIS_SOURCES,
|
|
4713
4840
|
MODEL_SELECTION_HISTORY_LIMIT,
|
|
4714
4841
|
MeshChunkAssembler,
|
|
4715
4842
|
NATIVE_TURN_OUTCOMES,
|
|
4843
|
+
NEEDS_WORDING_MARKER,
|
|
4716
4844
|
NOTIFY_KINDS,
|
|
4717
4845
|
NO_PROGRESS_OBSERVED_STATUSES,
|
|
4718
4846
|
NPM_UPDATE_TAGS,
|
|
@@ -4735,7 +4863,11 @@ var RelayReprobeScheduler = class {
|
|
|
4735
4863
|
RELAY_REPROBE_BASE_DELAY_MS,
|
|
4736
4864
|
RELAY_REPROBE_JITTER_RATIO,
|
|
4737
4865
|
RELAY_REPROBE_MAX_DELAY_MS,
|
|
4866
|
+
RELEASE_ACTORS,
|
|
4738
4867
|
RELEASE_CHANNELS,
|
|
4868
|
+
RELEASE_EVENT_TYPES,
|
|
4869
|
+
RELEASE_LIMITS,
|
|
4870
|
+
RELEASE_MEMBER_STATES,
|
|
4739
4871
|
REMOVED_MESH_TOOLS,
|
|
4740
4872
|
RETIRED_MESH_TOOLS,
|
|
4741
4873
|
RelayReprobeScheduler,
|
|
@@ -4782,12 +4914,15 @@ var RelayReprobeScheduler = class {
|
|
|
4782
4914
|
WORKER_REPORT_OUTCOMES,
|
|
4783
4915
|
WORKER_REPORT_SUMMARY_MAX_CHARS,
|
|
4784
4916
|
WORKER_TOOLS,
|
|
4917
|
+
aggregateMissionGitState,
|
|
4785
4918
|
appendWorkerProtocolFooter,
|
|
4786
4919
|
argsCarryStatusProbeMarker,
|
|
4787
4920
|
assessQuotaFreshness,
|
|
4788
4921
|
boundEventPayload,
|
|
4789
4922
|
buildSlotProposal,
|
|
4790
4923
|
canonicalDaemonId,
|
|
4924
|
+
changelogMissionMarker,
|
|
4925
|
+
classifyChangelogSection,
|
|
4791
4926
|
classifySessionStatus,
|
|
4792
4927
|
compareDashboardWireVersion,
|
|
4793
4928
|
compareSemver,
|
|
@@ -4904,6 +5039,7 @@ var RelayReprobeScheduler = class {
|
|
|
4904
5039
|
isMeshMissionStatusValue,
|
|
4905
5040
|
isMeshP2PSignalType,
|
|
4906
5041
|
isMeshRecordPayload,
|
|
5042
|
+
isMeshReleaseChannel,
|
|
4907
5043
|
isMeshTaskDifficulty,
|
|
4908
5044
|
isMeshTaskMode,
|
|
4909
5045
|
isMeshTaskPriority,
|
|
@@ -4912,6 +5048,7 @@ var RelayReprobeScheduler = class {
|
|
|
4912
5048
|
isMeshTopicEntry,
|
|
4913
5049
|
isMessageId,
|
|
4914
5050
|
isMissionOutcome,
|
|
5051
|
+
isMissionRefContained,
|
|
4915
5052
|
isMissionUpsertResponse,
|
|
4916
5053
|
isModelAxisSource,
|
|
4917
5054
|
isNativeMarkerRef,
|
|
@@ -4925,6 +5062,7 @@ var RelayReprobeScheduler = class {
|
|
|
4925
5062
|
isRawDaemonDoId,
|
|
4926
5063
|
isReadyStatus,
|
|
4927
5064
|
isRecord,
|
|
5065
|
+
isReleaseStatus,
|
|
4928
5066
|
isSendPolicy,
|
|
4929
5067
|
isSendPolicyMode,
|
|
4930
5068
|
isSendRefusal,
|
|
@@ -4951,6 +5089,7 @@ var RelayReprobeScheduler = class {
|
|
|
4951
5089
|
isWorkingStatus,
|
|
4952
5090
|
joinRepoPath,
|
|
4953
5091
|
launchModelSelectionValue,
|
|
5092
|
+
lintChangelogText,
|
|
4954
5093
|
machineCoreFromDaemonId,
|
|
4955
5094
|
makeTypeGuard,
|
|
4956
5095
|
measureWorstCaseChunkEnvelopeBytes,
|