@adhdev/mesh-shared 1.0.82-rc.26 → 1.0.82-rc.29
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 +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +38 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +36 -13
- package/dist/index.mjs.map +1 -1
- package/dist/mesh-tool-names.d.ts +2 -2
- package/dist/mesh-vocabulary.d.ts +6 -4
- package/dist/node-facts.d.ts +1 -1
- package/dist/task-source-phase.d.ts +75 -0
- package/dist/turn-evidence.d.ts +4 -4
- package/dist/turn-ipc-mission.d.ts +4 -0
- package/dist/turn-ipc-queue.d.ts +19 -0
- package/dist/turn-ipc.d.ts +2 -2
- package/package.json +1 -1
- package/src/assistant-protocol.ts +4 -0
- package/src/daemon-normalize.ts +7 -5
- package/src/index.ts +1 -0
- package/src/mesh-tool-names.ts +1 -0
- package/src/mesh-vocabulary.ts +4 -2
- package/src/node-facts.ts +1 -1
- package/src/quota-freshness.ts +8 -5
- package/src/task-source-phase.ts +61 -0
- package/src/turn-evidence.ts +2 -2
- package/src/turn-ipc-mission.ts +8 -2
- package/src/turn-ipc-queue.ts +29 -1
- package/src/turn-ipc-turn.ts +1 -1
- package/src/turn-ipc.ts +1 -0
|
@@ -107,6 +107,7 @@ export interface AssistantRemoteAccessBinding {
|
|
|
107
107
|
grantRevision: number;
|
|
108
108
|
status: 'active' | 'revoked';
|
|
109
109
|
allowedOps: readonly AssistantFollowerAllowedOp[];
|
|
110
|
+
allowCoordinatorLaunch?: boolean;
|
|
110
111
|
grantedAt: number;
|
|
111
112
|
revokedAt?: number;
|
|
112
113
|
}
|
|
@@ -142,6 +143,7 @@ export interface FollowedRemoteProjectEntry {
|
|
|
142
143
|
accountSlot: AssistantAccountSlot;
|
|
143
144
|
bindingRevision: number;
|
|
144
145
|
grantRevision: number;
|
|
146
|
+
allowCoordinatorLaunch?: boolean;
|
|
145
147
|
state: FollowedRemoteProjectState;
|
|
146
148
|
followedAt: number | string;
|
|
147
149
|
updatedAt: number | string;
|
|
@@ -170,6 +172,7 @@ export interface RemoteProjectCatalogItem {
|
|
|
170
172
|
name: string;
|
|
171
173
|
sanitizedRepoIdentity: string | null;
|
|
172
174
|
coordinatorState?: 'none' | 'idle' | 'working' | 'waiting' | string;
|
|
175
|
+
allowCoordinatorLaunch?: boolean;
|
|
173
176
|
capabilities: {
|
|
174
177
|
status: true;
|
|
175
178
|
read: true;
|
|
@@ -177,6 +180,7 @@ export interface RemoteProjectCatalogItem {
|
|
|
177
180
|
report: true;
|
|
178
181
|
send: true;
|
|
179
182
|
coordinatorPresent?: boolean;
|
|
183
|
+
allowCoordinatorLaunch?: boolean;
|
|
180
184
|
};
|
|
181
185
|
observedAt: number | string;
|
|
182
186
|
}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -206,6 +206,8 @@ __export(index_exports, {
|
|
|
206
206
|
decodeQueueQueryResponse: () => decodeQueueQueryResponse,
|
|
207
207
|
decodeQueueRequeueRequest: () => decodeQueueRequeueRequest,
|
|
208
208
|
decodeQueueRequeueResponse: () => decodeQueueRequeueResponse,
|
|
209
|
+
decodeQueueReviseRequest: () => decodeQueueReviseRequest,
|
|
210
|
+
decodeQueueReviseResponse: () => decodeQueueReviseResponse,
|
|
209
211
|
decodeRecordLocalRequest: () => decodeRecordLocalRequest,
|
|
210
212
|
decodeRecordLocalResponse: () => decodeRecordLocalResponse,
|
|
211
213
|
decodeRecoveryContextQueryRequest: () => decodeRecoveryContextQueryRequest,
|
|
@@ -708,8 +710,10 @@ function backfillCheckAt(quota, now) {
|
|
|
708
710
|
function assessQuotaFreshness(quota, now = Date.now()) {
|
|
709
711
|
const meta = quota.metadata;
|
|
710
712
|
const kind = meta?.failureKind;
|
|
711
|
-
const userMustAct = kind === "no-data" && quota.provider !== "codex-cli"
|
|
713
|
+
const userMustAct = kind === "no-data" && quota.provider !== "codex-cli";
|
|
714
|
+
const awaitsCliUse = kind === "expired-token" && ["grok-cli", "kimi", "antigravity-cli"].includes(quota.provider);
|
|
712
715
|
if (userMustAct) return hasReading(quota) ? { cue: "stale", userMustAct: true } : { userMustAct: true };
|
|
716
|
+
if (awaitsCliUse) return hasReading(quota) ? { cue: "stale", userMustAct: false } : { userMustAct: false };
|
|
713
717
|
if (meta?.lastGoodWindows !== true) {
|
|
714
718
|
const measuredAt = finiteMs(quota.updatedAt);
|
|
715
719
|
if (hasReading(quota) && (measuredAt === void 0 || now - measuredAt >= QUOTA_BACKFILL_HORIZON_MS)) {
|
|
@@ -756,19 +760,21 @@ function isPhantomDaemonEntry(entry) {
|
|
|
756
760
|
function machineCoreFromDaemonId(id2) {
|
|
757
761
|
const trimmed = readString(id2);
|
|
758
762
|
if (!trimmed) return void 0;
|
|
763
|
+
const lower = trimmed.toLowerCase();
|
|
759
764
|
for (const prefix of DAEMON_ID_PREFIXES) {
|
|
760
|
-
if (
|
|
765
|
+
if (lower.startsWith(prefix)) {
|
|
761
766
|
const core = trimmed.slice(prefix.length).trim();
|
|
762
|
-
|
|
767
|
+
if (!core) return void 0;
|
|
768
|
+
return /^mach_/i.test(core) ? `mach_${core.slice(5)}` : core;
|
|
763
769
|
}
|
|
764
770
|
}
|
|
765
|
-
return trimmed;
|
|
771
|
+
return /^mach_/i.test(trimmed) ? `mach_${trimmed.slice(5)}` : trimmed;
|
|
766
772
|
}
|
|
767
773
|
function canonicalDaemonId(id2) {
|
|
768
774
|
const core = machineCoreFromDaemonId(id2);
|
|
769
775
|
if (!core) return void 0;
|
|
770
|
-
if (
|
|
771
|
-
return `
|
|
776
|
+
if (!/^mach_/i.test(core)) return core;
|
|
777
|
+
return `daemon_mach_${core.slice(5)}`;
|
|
772
778
|
}
|
|
773
779
|
function daemonIdsEquivalent(a, b) {
|
|
774
780
|
const coreA = machineCoreFromDaemonId(a);
|
|
@@ -1135,6 +1141,7 @@ var CANONICAL_MESH_TOOL_NAMES = [
|
|
|
1135
1141
|
"mesh_view_queue",
|
|
1136
1142
|
"mesh_queue_cancel",
|
|
1137
1143
|
"mesh_queue_requeue",
|
|
1144
|
+
"mesh_queue_revise",
|
|
1138
1145
|
"mesh_send_task",
|
|
1139
1146
|
"mesh_read_chat",
|
|
1140
1147
|
"mesh_read_debug",
|
|
@@ -1856,8 +1863,8 @@ function isIdleSessionState(state) {
|
|
|
1856
1863
|
}
|
|
1857
1864
|
|
|
1858
1865
|
// src/mesh-vocabulary.ts
|
|
1859
|
-
var MESH_TASK_STATUSES = ["pending", "assigned", "completed", "failed", "cancelled"];
|
|
1860
|
-
var MESH_TERMINAL_TASK_STATUSES = ["completed", "failed", "cancelled"];
|
|
1866
|
+
var MESH_TASK_STATUSES = ["pending", "assigned", "completed", "blocked", "failed", "cancelled"];
|
|
1867
|
+
var MESH_TERMINAL_TASK_STATUSES = ["completed", "blocked", "failed", "cancelled"];
|
|
1861
1868
|
var MESH_TASK_MODES = ["code_change", "validation", "live_debug_readonly", "launch_app", "convergence"];
|
|
1862
1869
|
var MESH_TASK_PRIORITIES = ["low", "normal", "high"];
|
|
1863
1870
|
var MESH_THINKING_LEVELS = ["low", "medium", "high"];
|
|
@@ -2378,7 +2385,7 @@ var HOLD_REASONS = [
|
|
|
2378
2385
|
"await_end",
|
|
2379
2386
|
"report_correction"
|
|
2380
2387
|
];
|
|
2381
|
-
var TURN_OUTCOMES = ["completed", "failed", "cancelled"];
|
|
2388
|
+
var TURN_OUTCOMES = ["completed", "blocked", "failed", "cancelled"];
|
|
2382
2389
|
var COMMIT_STRENGTHS = ["genuine", "weak", "tool_report", "operator"];
|
|
2383
2390
|
var TURN_REASONS = [
|
|
2384
2391
|
// commits
|
|
@@ -2423,6 +2430,7 @@ var TURN_REASONS = [
|
|
|
2423
2430
|
];
|
|
2424
2431
|
var NOTIFY_KINDS = [
|
|
2425
2432
|
"completed",
|
|
2433
|
+
"blocked",
|
|
2426
2434
|
"failed",
|
|
2427
2435
|
"cancelled",
|
|
2428
2436
|
"stopped",
|
|
@@ -2916,7 +2924,7 @@ function isTurnAttemptRefValue(value) {
|
|
|
2916
2924
|
function isTurnObserveResponse(value) {
|
|
2917
2925
|
return isRecord(value) && hasOnlyKeys2(value, ["verdict", "attemptRef", "outcome"]) && isTurnObserveVerdict(value.verdict) && isTurnAttemptRefValue(value.attemptRef) && (value.outcome === void 0 || isTurnOutcomeValue(value.outcome));
|
|
2918
2926
|
}
|
|
2919
|
-
var TURN_OUTCOMES_LOCAL = ["completed", "failed", "cancelled"];
|
|
2927
|
+
var TURN_OUTCOMES_LOCAL = ["completed", "blocked", "failed", "cancelled"];
|
|
2920
2928
|
function isTurnOutcomeValue(value) {
|
|
2921
2929
|
return typeof value === "string" && TURN_OUTCOMES_LOCAL.includes(value);
|
|
2922
2930
|
}
|
|
@@ -3217,12 +3225,13 @@ function isMeshMissionTaskAggregateWire(value) {
|
|
|
3217
3225
|
return value.lastActivityAt === null || typeof value.lastActivityAt === "string";
|
|
3218
3226
|
}
|
|
3219
3227
|
function isMeshMissionStatsWire(value) {
|
|
3220
|
-
const keys = ["missionId", "taskCount", "completed", "failed", "totalDurationMs", "wallClockMs", "retries", "incompleteTaskIds"];
|
|
3228
|
+
const keys = ["missionId", "taskCount", "completed", "failed", "blocked", "totalDurationMs", "wallClockMs", "retries", "incompleteTaskIds"];
|
|
3221
3229
|
if (!isRecord(value) || !hasOnlyKeys2(value, keys)) return false;
|
|
3222
3230
|
if (!isEvidenceIdentifier(value.missionId)) return false;
|
|
3223
3231
|
for (const k of ["taskCount", "completed", "failed", "totalDurationMs", "retries"]) {
|
|
3224
3232
|
if (!isNonNegativeInt(value[k])) return false;
|
|
3225
3233
|
}
|
|
3234
|
+
if (value.blocked !== void 0 && !isNonNegativeInt(value.blocked)) return false;
|
|
3226
3235
|
if (value.wallClockMs !== null && !isNonNegativeInt(value.wallClockMs)) return false;
|
|
3227
3236
|
if (!Array.isArray(value.incompleteTaskIds) || !value.incompleteTaskIds.every(isEvidenceIdentifier)) return false;
|
|
3228
3237
|
return true;
|
|
@@ -3344,12 +3353,13 @@ function isLedgerQueryEntryWire(value) {
|
|
|
3344
3353
|
return true;
|
|
3345
3354
|
}
|
|
3346
3355
|
function isLedgerQuerySummaryWire(value) {
|
|
3347
|
-
const keys = ["meshId", "totalEntries", "taskDispatched", "taskCompleted", "taskFailed", "taskStalled", "sessionLaunched", "checkpointCreated", "lastActivityAt", "recentFailures"];
|
|
3356
|
+
const keys = ["meshId", "totalEntries", "taskDispatched", "taskCompleted", "taskFailed", "taskBlocked", "taskStalled", "sessionLaunched", "checkpointCreated", "lastActivityAt", "recentFailures"];
|
|
3348
3357
|
if (!isRecord(value) || !hasOnlyKeys2(value, keys)) return false;
|
|
3349
3358
|
if (!isEvidenceIdentifier(value.meshId)) return false;
|
|
3350
3359
|
for (const k of ["totalEntries", "taskDispatched", "taskCompleted", "taskFailed", "taskStalled", "sessionLaunched", "checkpointCreated", "recentFailures"]) {
|
|
3351
3360
|
if (!isNonNegativeInt(value[k])) return false;
|
|
3352
3361
|
}
|
|
3362
|
+
if (value.taskBlocked !== void 0 && !isNonNegativeInt(value.taskBlocked)) return false;
|
|
3353
3363
|
if (value.lastActivityAt !== null && typeof value.lastActivityAt !== "string") return false;
|
|
3354
3364
|
return true;
|
|
3355
3365
|
}
|
|
@@ -3393,9 +3403,10 @@ function isQueueDependencyHeadWire(value) {
|
|
|
3393
3403
|
return isRecord(value) && hasOnlyKeys2(value, ["id", "status", "cancelReason"]) && typeof value.id === "string" && typeof value.status === "string" && (value.cancelReason === void 0 || typeof value.cancelReason === "string");
|
|
3394
3404
|
}
|
|
3395
3405
|
function isQueueQueryResponse(value) {
|
|
3396
|
-
if (!isRecord(value) || !hasOnlyKeys2(value, ["entries", "counts", "oldHistoricalCount", "dependencyHeads"])) return false;
|
|
3406
|
+
if (!isRecord(value) || !hasOnlyKeys2(value, ["entries", "counts", "oldHistoricalCount", "legacyReportedBlockedCount", "dependencyHeads"])) return false;
|
|
3397
3407
|
if (!Array.isArray(value.entries) || !value.entries.every(isQueueEntryWire)) return false;
|
|
3398
3408
|
if (value.counts !== void 0 && (!isRecord(value.counts) || !Object.values(value.counts).every(isNonNegativeInt))) return false;
|
|
3409
|
+
if (value.legacyReportedBlockedCount !== void 0 && !isNonNegativeInt(value.legacyReportedBlockedCount)) return false;
|
|
3399
3410
|
if (value.oldHistoricalCount !== void 0 && !isNonNegativeInt(value.oldHistoricalCount)) return false;
|
|
3400
3411
|
if (value.dependencyHeads !== void 0 && (!Array.isArray(value.dependencyHeads) || !value.dependencyHeads.every(isQueueDependencyHeadWire))) return false;
|
|
3401
3412
|
return true;
|
|
@@ -3517,6 +3528,17 @@ function isRecoveryContextQueryResponse(value) {
|
|
|
3517
3528
|
function decodeRecoveryContextQueryResponse(value) {
|
|
3518
3529
|
return isRecoveryContextQueryResponse(value) ? value : null;
|
|
3519
3530
|
}
|
|
3531
|
+
function decodeQueueReviseRequest(value) {
|
|
3532
|
+
if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "taskId", "expectedRevision", "patch"]) || value.v !== TURN_IPC_PROTOCOL_VERSION || !isEvidenceIdentifier(value.meshId) || !isEvidenceIdentifier(value.taskId) || !Number.isSafeInteger(value.expectedRevision) || value.expectedRevision < 0 || !isRecord(value.patch) || !Object.keys(value.patch).length || !hasOnlyKeys2(value.patch, ["message", "ownedPaths", "phase", "dependsOn", "routingPreferences", "review"])) return null;
|
|
3533
|
+
const p = value.patch;
|
|
3534
|
+
if (p.message !== void 0 && (typeof p.message !== "string" || !p.message.trim())) return null;
|
|
3535
|
+
if (p.phase !== void 0 && p.phase !== "source" && p.phase !== "integration") return null;
|
|
3536
|
+
for (const key of ["ownedPaths", "dependsOn"]) {
|
|
3537
|
+
if (p[key] !== void 0 && (!Array.isArray(p[key]) || !p[key].every((x) => typeof x === "string" && !!x.trim()))) return null;
|
|
3538
|
+
}
|
|
3539
|
+
return value;
|
|
3540
|
+
}
|
|
3541
|
+
var decodeQueueReviseResponse = decodeQueueRequeueResponse;
|
|
3520
3542
|
|
|
3521
3543
|
// src/turn-ipc-stats.ts
|
|
3522
3544
|
function isTaskStatsQueryRequest(value) {
|
|
@@ -3615,6 +3637,7 @@ var TURN_IPC_COMMANDS = [
|
|
|
3615
3637
|
"queue_enqueue_batch",
|
|
3616
3638
|
"queue_cancel",
|
|
3617
3639
|
"queue_requeue",
|
|
3640
|
+
"queue_revise",
|
|
3618
3641
|
"direct_dispatch_record",
|
|
3619
3642
|
"active_work_query",
|
|
3620
3643
|
"recovery_context_query",
|
|
@@ -4304,6 +4327,8 @@ function isProviderQuestionBinding(value) {
|
|
|
4304
4327
|
decodeQueueQueryResponse,
|
|
4305
4328
|
decodeQueueRequeueRequest,
|
|
4306
4329
|
decodeQueueRequeueResponse,
|
|
4330
|
+
decodeQueueReviseRequest,
|
|
4331
|
+
decodeQueueReviseResponse,
|
|
4307
4332
|
decodeRecordLocalRequest,
|
|
4308
4333
|
decodeRecordLocalResponse,
|
|
4309
4334
|
decodeRecoveryContextQueryRequest,
|