atris 3.37.0 → 3.38.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/README.md +2 -0
- package/atris/PERSONA.md +3 -7
- package/atris.md +10 -2
- package/ax +158 -33
- package/bin/atris.js +49 -2
- package/commands/activate.js +16 -3
- package/commands/agent-spawn.js +0 -7
- package/commands/autoland.js +92 -14
- package/commands/autopilot-front.js +0 -4
- package/commands/autopilot.js +0 -12
- package/commands/brain.js +0 -7
- package/commands/brief.js +0 -2
- package/commands/business-sync.js +0 -1
- package/commands/business.js +107 -12
- package/commands/clean.js +31 -2
- package/commands/close.js +46 -11
- package/commands/cloud.js +0 -1
- package/commands/codex-goal.js +0 -2
- package/commands/computer.js +6 -5
- package/commands/console.js +46 -9
- package/commands/deck.js +29 -8
- package/commands/dream.js +0 -7
- package/commands/drill.js +0 -1
- package/commands/engine.js +10 -18
- package/commands/experiments.js +0 -4
- package/commands/fleet-report.js +12 -4
- package/commands/game.js +261 -0
- package/commands/gm.js +10 -2
- package/commands/goal.js +0 -6
- package/commands/harvest.js +0 -1
- package/commands/improve.js +29 -8
- package/commands/init.js +18 -34
- package/commands/integrations.js +0 -7
- package/commands/land.js +71 -8
- package/commands/launchpad.js +0 -2
- package/commands/lesson.js +17 -7
- package/commands/loop-front.js +0 -2
- package/commands/loops.js +6 -5
- package/commands/meet.js +0 -2
- package/commands/member.js +68 -3
- package/commands/mission.js +359 -102
- package/commands/next.js +0 -1
- package/commands/now.js +0 -12
- package/commands/one-lap.js +8 -8
- package/commands/orb.js +0 -4
- package/commands/pack-craft.js +0 -1
- package/commands/pack.js +670 -77
- package/commands/play.js +0 -2
- package/commands/probe.js +10 -4
- package/commands/pulse.js +73 -48
- package/commands/push.js +0 -4
- package/commands/radar.js +14 -11
- package/commands/recover.js +340 -0
- package/commands/report.js +0 -1
- package/commands/router.js +319 -0
- package/commands/run-front.js +0 -2
- package/commands/search.js +0 -3
- package/commands/skill.js +7 -2
- package/commands/slop.js +225 -7
- package/commands/status.js +6 -0
- package/commands/stream.js +0 -2
- package/commands/study.js +0 -3
- package/commands/sync-checkout.js +51 -0
- package/commands/sync.js +11 -40
- package/commands/task.js +125 -39
- package/commands/teach.js +86 -0
- package/commands/unknowns.js +0 -10
- package/commands/update.js +0 -1
- package/commands/visualize.js +0 -5
- package/commands/watch.js +0 -6
- package/commands/wiki.js +41 -11
- package/commands/wish.js +0 -1
- package/commands/worktree.js +87 -14
- package/commands/xp.js +1 -6
- package/commands/youtube.js +0 -2
- package/lib/accept-verify-gate.js +122 -0
- package/lib/activity-stream.js +0 -2
- package/lib/auto-accept-certified.js +145 -2
- package/lib/autoland.js +0 -3
- package/lib/ax-auto-lane.js +94 -10
- package/lib/bench/context.js +0 -2
- package/lib/bench/report.js +0 -1
- package/lib/bench/runner.js +0 -11
- package/lib/brief-ledger.js +0 -6
- package/lib/business-simulate.js +382 -0
- package/lib/chat-log-scan.js +0 -5
- package/lib/checkout-sync.js +52 -0
- package/lib/claude-boot-block.js +48 -0
- package/lib/cloud-mission.js +0 -6
- package/lib/codex-flight.js +0 -1
- package/lib/conductor-artifacts.js +25 -0
- package/lib/context-gatherer.js +0 -1
- package/lib/deck-compose.js +0 -1
- package/lib/deck-history.js +0 -1
- package/lib/deck-layout.js +0 -5
- package/lib/deck-review.js +0 -7
- package/lib/deck-schema.js +0 -1
- package/lib/default-verifier.js +0 -2
- package/lib/engine-registry.js +16 -8
- package/lib/experiments/daily.js +0 -6
- package/lib/fleet.js +210 -27
- package/lib/functional-owner.js +0 -3
- package/lib/inspect-fields.js +0 -1
- package/lib/known-commands.js +2 -2
- package/lib/learnings.js +0 -2
- package/lib/loop-doctor.js +11 -17
- package/lib/manifest.js +0 -2
- package/lib/member-alive.js +0 -1
- package/lib/member-switches.js +0 -5
- package/lib/mission-artifact.js +0 -1
- package/lib/mission-protected-lane.js +293 -0
- package/lib/mission-room.js +0 -2
- package/lib/mission-runtime-loop.js +0 -1
- package/lib/next-moves.js +0 -18
- package/lib/official-cli-integration.js +0 -4
- package/lib/orb-context.js +6 -3
- package/lib/orb-scorecard.js +0 -1
- package/lib/outbound-send-gate.js +0 -6
- package/lib/permission-grants.js +0 -6
- package/lib/policy-lessons.js +0 -2
- package/lib/pulse.js +68 -15
- package/lib/review-integrity.js +0 -2
- package/lib/router-brain.js +0 -2
- package/lib/runner-command.js +0 -4
- package/lib/runtime-bootstrap.js +0 -1
- package/lib/scorecard.js +0 -1
- package/lib/self-drive.js +1 -1
- package/lib/state-detection.js +0 -6
- package/lib/task-db.js +0 -4
- package/lib/team-presence.js +0 -1
- package/lib/voice-gate.js +63 -2
- package/lib/wiki.js +152 -9
- package/lib/wish-audit.js +20 -6
- package/lib/wish-delegate.js +26 -20
- package/lib/wish-stats.js +0 -5
- package/lib/wish-store.js +0 -1
- package/lib/workspace-safety.js +0 -2
- package/lib/zip.js +0 -1
- package/package.json +1 -1
package/lib/wish-delegate.js
CHANGED
|
@@ -919,9 +919,13 @@ function startWishDelegation(wish, audit, root, options = {}) {
|
|
|
919
919
|
const reused = missionPayload && missionPayload.action === 'mission_reused';
|
|
920
920
|
// A delegated wish must have a live worker, not just a filed mission. Start
|
|
921
921
|
// the detached driver for any runner that can work headlessly; runners that
|
|
922
|
-
// need a live session keep an honest not-started marker instead.
|
|
922
|
+
// need a live session keep an honest not-started marker instead. A one-lap
|
|
923
|
+
// intake is the exception: the calling lap dispatches in-process through the
|
|
924
|
+
// sealed review sandbox, so a detached driver would race it with a second,
|
|
925
|
+
// ungated dispatch of the same ask.
|
|
923
926
|
let driver = null;
|
|
924
|
-
|
|
927
|
+
const lapOwnsDispatch = options.oneLap === true;
|
|
928
|
+
if (mission && !lapOwnsDispatch && !missionRunnerNeedsLiveSession(mission.runner) && process.env.ATRIS_WISH_NO_DRIVER !== '1') {
|
|
925
929
|
driver = spawnMissionDriver(mission, root);
|
|
926
930
|
}
|
|
927
931
|
const workerStarted = Boolean(driver && driver.ok && (driver.pid || driver.already_running));
|
|
@@ -940,9 +944,11 @@ function startWishDelegation(wish, audit, root, options = {}) {
|
|
|
940
944
|
worker_started: workerStarted,
|
|
941
945
|
...(driver && driver.pid ? { driver_pid: driver.pid } : {}),
|
|
942
946
|
...(mission && !workerStarted ? {
|
|
943
|
-
worker_note:
|
|
944
|
-
?
|
|
945
|
-
:
|
|
947
|
+
worker_note: lapOwnsDispatch
|
|
948
|
+
? 'the one-lap dispatches this in-process'
|
|
949
|
+
: missionRunnerNeedsLiveSession(mission.runner)
|
|
950
|
+
? `waiting for a live ${mission.runner || 'session'} to pick this up`
|
|
951
|
+
: `worker did not start; run: atris mission run ${mission.id}`,
|
|
946
952
|
} : {}),
|
|
947
953
|
engine: reused ? (mission?.runner || engine) : engine,
|
|
948
954
|
validator: audit.validator.id,
|
|
@@ -1422,7 +1428,12 @@ function dispatchWishHeadlessly(wish, root, reason) {
|
|
|
1422
1428
|
questions: audit.questions,
|
|
1423
1429
|
};
|
|
1424
1430
|
}
|
|
1425
|
-
|
|
1431
|
+
// Preserve one-lap ownership through sweep/headless grant: without this,
|
|
1432
|
+
// a later atris wish sweep would spawn the detached mission driver and race
|
|
1433
|
+
// the lap's sealed in-process dispatch (CLI-1170).
|
|
1434
|
+
const { record } = appendDelegatedWishRecord(wish, audit, root, {
|
|
1435
|
+
oneLap: wish.one_lap === true,
|
|
1436
|
+
});
|
|
1426
1437
|
return {
|
|
1427
1438
|
id: wish.id,
|
|
1428
1439
|
status: 'delegated',
|
|
@@ -1531,6 +1542,9 @@ function runCapturedWish(text, root = process.cwd(), options = {}) {
|
|
|
1531
1542
|
status: 'captured',
|
|
1532
1543
|
};
|
|
1533
1544
|
if (options.parentId) wish.parent_id = String(options.parentId);
|
|
1545
|
+
// One-lap provenance lives on the record so a later `wish answer` also
|
|
1546
|
+
// skips the detached driver: the lap owns dispatch in-process (80de4ae1).
|
|
1547
|
+
if (options.singleTask === true) wish.one_lap = true;
|
|
1534
1548
|
if (engineOverride) wish.requested_engine = engineOverride;
|
|
1535
1549
|
if (options.metric && options.metric.ok) wish.metric = options.metric.expression;
|
|
1536
1550
|
captureWishToJournal(text, root);
|
|
@@ -1539,7 +1553,10 @@ function runCapturedWish(text, root = process.cwd(), options = {}) {
|
|
|
1539
1553
|
const taskText = wishBodyText(text);
|
|
1540
1554
|
const verifyPlan = options.verifyPlan || deriveVerifyPlan(text);
|
|
1541
1555
|
const decompositionVerifyPlan = options.verifyPlan || (verifyPlan.status === 'explicit' ? verifyPlan : null);
|
|
1542
|
-
|
|
1556
|
+
// A one-lap intake owns dispatch and validation policy in-process, so its
|
|
1557
|
+
// route must stay deterministic across machines: never interview about the
|
|
1558
|
+
// reviewer just because no validator binary is installed here.
|
|
1559
|
+
const audit = auditWish(taskText, root, { engineOverride, assumeValidator: options.singleTask === true });
|
|
1543
1560
|
if (builderMode) return builderWish(wish, audit, root, asJson);
|
|
1544
1561
|
const parts = options.singleTask ? null : analyzeWishParts(text, root);
|
|
1545
1562
|
if (parts && noMission) return captureOnlyWish(wish, null, root, asJson);
|
|
@@ -1552,6 +1569,7 @@ function runCapturedWish(text, root = process.cwd(), options = {}) {
|
|
|
1552
1569
|
return delegateWish(wish, audit, root, asJson, {
|
|
1553
1570
|
taskText,
|
|
1554
1571
|
recordText: wish.text,
|
|
1572
|
+
oneLap: options.singleTask === true,
|
|
1555
1573
|
...(options.metric ? { metric: options.metric } : {}),
|
|
1556
1574
|
verifyPlan,
|
|
1557
1575
|
userVerifyProvided: options.userVerifyProvided === true || verifyPlan.status === 'explicit',
|
|
@@ -1622,7 +1640,7 @@ function applyAnswer(wish, answer, root, options = {}) {
|
|
|
1622
1640
|
const audit = bestGuessAfterRepeatedQuestion(answeredWish, audited, root);
|
|
1623
1641
|
if (!audit.ok) return askForInput(answeredWish, audit, root, asJson);
|
|
1624
1642
|
if (noMission) return captureOnlyWish(answeredWish, audit, root, asJson);
|
|
1625
|
-
return delegateWish(answeredWish, audit, root, asJson, {});
|
|
1643
|
+
return delegateWish(answeredWish, audit, root, asJson, { oneLap: wish.one_lap === true });
|
|
1626
1644
|
}
|
|
1627
1645
|
|
|
1628
1646
|
function sameWaitingPart(left, right) {
|
|
@@ -1811,25 +1829,13 @@ function grantWish(positionals, root = process.cwd(), options = {}) {
|
|
|
1811
1829
|
module.exports = {
|
|
1812
1830
|
REVIEW_WORD_SCORES,
|
|
1813
1831
|
answerWish,
|
|
1814
|
-
appendDelegatedWishRecord,
|
|
1815
|
-
appendNeedsInputRecord,
|
|
1816
|
-
askForInput,
|
|
1817
|
-
captureOnlyWish,
|
|
1818
1832
|
captureWishToJournal,
|
|
1819
|
-
delegateWish,
|
|
1820
|
-
dispatchWishHeadlessly,
|
|
1821
|
-
fulfillLandedWishes,
|
|
1822
1833
|
grantWish,
|
|
1823
|
-
metricVerifierCommand,
|
|
1824
|
-
listedWishes,
|
|
1825
|
-
openWishes,
|
|
1826
1834
|
parseMetricExpression,
|
|
1827
1835
|
printBoard,
|
|
1828
1836
|
printList,
|
|
1829
1837
|
printReviewNudges,
|
|
1830
1838
|
printRewards,
|
|
1831
|
-
reviewNudgeWishes,
|
|
1832
|
-
reviewWordScore,
|
|
1833
1839
|
reviewWish,
|
|
1834
1840
|
runAgainWish,
|
|
1835
1841
|
runCapturedWish,
|
package/lib/wish-stats.js
CHANGED
package/lib/wish-store.js
CHANGED
package/lib/workspace-safety.js
CHANGED
package/lib/zip.js
CHANGED