@bastani/atomic 0.9.16-alpha.7 → 0.9.16-alpha.8
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 +19 -0
- package/dist/builtin/intercom/CHANGELOG.md +6 -0
- package/dist/builtin/intercom/README.md +4 -4
- package/dist/builtin/intercom/broker/broker.ts +617 -22
- package/dist/builtin/intercom/broker/client-message-validation.ts +9 -0
- package/dist/builtin/intercom/broker/client.ts +200 -10
- package/dist/builtin/intercom/broker/pending-send-registry.ts +4 -0
- package/dist/builtin/intercom/broker/send-handler.ts +90 -36
- package/dist/builtin/intercom/broker/send-signature.ts +20 -8
- package/dist/builtin/intercom/group.ts +85 -0
- package/dist/builtin/intercom/index.bundle.mjs +680 -53
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/session-target.ts +54 -0
- package/dist/builtin/intercom/skills/intercom/SKILL.md +18 -3
- package/dist/builtin/intercom/source-ownership.ts +31 -0
- package/dist/builtin/intercom/types.ts +115 -0
- package/dist/builtin/mcp/index.bundle.mjs +109 -35
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +173 -51
- package/dist/builtin/web-access/index.bundle.mjs +109 -35
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +15 -0
- package/dist/builtin/workflows/README.md +40 -37
- package/dist/builtin/workflows/builtin/adversarial-verification.js +13 -0
- package/dist/builtin/workflows/builtin/{shared-prompts.ts → chunk-0x6e303p.js} +133 -154
- package/dist/builtin/workflows/builtin/chunk-29wrp38a.js +199 -0
- package/dist/builtin/workflows/builtin/chunk-2dqb5s2q.js +602 -0
- package/dist/builtin/workflows/builtin/chunk-4febxsv4.js +264 -0
- package/dist/builtin/workflows/builtin/chunk-5n10x7j2.js +69730 -0
- package/dist/builtin/workflows/builtin/chunk-5wgwscd0.js +4 -0
- package/dist/builtin/workflows/builtin/chunk-6fqs7c01.js +155 -0
- package/dist/builtin/workflows/builtin/chunk-7430zyas.js +126 -0
- package/dist/builtin/workflows/builtin/chunk-7at6dnkr.js +33 -0
- package/dist/builtin/workflows/builtin/chunk-82ha8p41.js +175 -0
- package/dist/builtin/workflows/builtin/chunk-bfkmzv9h.js +156 -0
- package/dist/builtin/workflows/builtin/chunk-c53y8bdh.js +345 -0
- package/dist/builtin/workflows/builtin/chunk-cdtd3m3w.js +529 -0
- package/dist/builtin/workflows/builtin/chunk-cg9tmks0.js +206 -0
- package/dist/builtin/workflows/builtin/chunk-hdpj1dkw.js +2447 -0
- package/dist/builtin/workflows/builtin/chunk-hzzn6adg.js +221 -0
- package/dist/builtin/workflows/builtin/chunk-nqr34qp3.js +1061 -0
- package/dist/builtin/workflows/builtin/chunk-qwzvgxnq.js +404 -0
- package/dist/builtin/workflows/builtin/chunk-qx2ptjs3.js +215 -0
- package/dist/builtin/workflows/builtin/chunk-v04c5qmd.js +1207 -0
- package/dist/builtin/workflows/builtin/chunk-wpckd35c.js +12 -0
- package/dist/builtin/workflows/builtin/chunk-x2ghn0je.js +4110 -0
- package/dist/builtin/workflows/builtin/chunk-zf28603f.js +1080 -0
- package/dist/builtin/workflows/builtin/classify-and-act.js +12 -0
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +10 -0
- package/dist/builtin/workflows/builtin/generate-and-filter.js +12 -0
- package/dist/builtin/workflows/builtin/goal.js +16 -0
- package/dist/builtin/workflows/builtin/index.js +49 -0
- package/dist/builtin/workflows/builtin/loop-until-done.js +12 -0
- package/dist/builtin/workflows/builtin/open-claude-design.js +11 -0
- package/dist/builtin/workflows/builtin/ralph.js +16 -0
- package/dist/builtin/workflows/builtin/steering-context.d.ts +6 -0
- package/dist/builtin/workflows/builtin/steering-context.js +7 -0
- package/dist/builtin/workflows/builtin/tournament.js +13 -0
- package/dist/builtin/workflows/package.json +10 -7
- package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +41 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +1228 -428
- package/dist/builtin/workflows/src/{index.bundle.mjs → index.js} +956 -427
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +403 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +327 -0
- package/dist/builtin/workflows/src/shared/budget.d.ts +67 -0
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +60 -0
- package/dist/builtin/workflows/src/shared/workflow-heartbeat-contract.d.ts +21 -0
- package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
- package/dist/core/agent-session-custom-message-commit.js +12 -5
- package/dist/core/agent-session-custom-message-commit.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js +2 -0
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +2 -0
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +4 -0
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/builtin-install-layout.d.ts +1 -1
- package/dist/core/builtin-install-layout.d.ts.map +1 -1
- package/dist/core/builtin-install-layout.js +1 -1
- package/dist/core/builtin-install-layout.js.map +1 -1
- package/dist/core/codex-fast-mode.d.ts +10 -7
- package/dist/core/codex-fast-mode.d.ts.map +1 -1
- package/dist/core/codex-fast-mode.js +31 -13
- package/dist/core/codex-fast-mode.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +35 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +6 -1
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/model-runtime.d.ts +2 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +4 -0
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +1 -0
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/runtime-credentials.js +8 -0
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +5 -5
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-storage.d.ts +2 -0
- package/dist/core/session-manager-storage.d.ts.map +1 -1
- package/dist/core/session-manager-storage.js +4 -2
- package/dist/core/session-manager-storage.js.map +1 -1
- package/dist/core/slash-commands.js +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/workflow-stage-admission.d.ts +6 -1
- package/dist/core/workflow-stage-admission.d.ts.map +1 -1
- package/dist/core/workflow-stage-admission.js +8 -9
- package/dist/core/workflow-stage-admission.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +1 -1
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +4 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +69 -10
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +18 -2
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +33 -5
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +8 -4
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +13 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/intercom.md +15 -6
- package/docs/packages.md +2 -2
- package/docs/providers.md +8 -3
- package/docs/quickstart.md +2 -2
- package/docs/rpc.md +21 -4
- package/docs/settings.md +6 -4
- package/docs/subagents.md +1 -1
- package/docs/usage.md +1 -1
- package/docs/workflows.md +108 -239
- package/npm-shrinkwrap.json +32 -32
- package/package.json +9 -13
- package/dist/builtin/workflows/ambient.d.ts +0 -61
- package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +0 -26
- package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +0 -391
- package/dist/builtin/workflows/builtin/adversarial-verification.ts +0 -34
- package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +0 -14
- package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +0 -108
- package/dist/builtin/workflows/builtin/classify-and-act.ts +0 -40
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +0 -14
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +0 -96
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +0 -37
- package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +0 -41
- package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +0 -90
- package/dist/builtin/workflows/builtin/generate-and-filter.ts +0 -31
- package/dist/builtin/workflows/builtin/goal-artifacts.ts +0 -64
- package/dist/builtin/workflows/builtin/goal-convergence.ts +0 -87
- package/dist/builtin/workflows/builtin/goal-ledger.ts +0 -139
- package/dist/builtin/workflows/builtin/goal-models.ts +0 -72
- package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +0 -94
- package/dist/builtin/workflows/builtin/goal-prompts.ts +0 -217
- package/dist/builtin/workflows/builtin/goal-reducer.ts +0 -176
- package/dist/builtin/workflows/builtin/goal-reports.ts +0 -76
- package/dist/builtin/workflows/builtin/goal-reverify.ts +0 -305
- package/dist/builtin/workflows/builtin/goal-review.ts +0 -139
- package/dist/builtin/workflows/builtin/goal-runner.ts +0 -504
- package/dist/builtin/workflows/builtin/goal-schemas.ts +0 -89
- package/dist/builtin/workflows/builtin/goal-types.ts +0 -164
- package/dist/builtin/workflows/builtin/goal.ts +0 -78
- package/dist/builtin/workflows/builtin/index.ts +0 -16
- package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +0 -87
- package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +0 -282
- package/dist/builtin/workflows/builtin/loop-until-done.ts +0 -51
- package/dist/builtin/workflows/builtin/open-claude-design-live-protocol.ts +0 -305
- package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +0 -337
- package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +0 -347
- package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +0 -313
- package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +0 -311
- package/dist/builtin/workflows/builtin/open-claude-design.ts +0 -57
- package/dist/builtin/workflows/builtin/pattern-artifact-root.ts +0 -28
- package/dist/builtin/workflows/builtin/progress-scoring.ts +0 -230
- package/dist/builtin/workflows/builtin/ralph-core.ts +0 -449
- package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +0 -100
- package/dist/builtin/workflows/builtin/ralph-models.ts +0 -183
- package/dist/builtin/workflows/builtin/ralph-review-gate.ts +0 -103
- package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +0 -104
- package/dist/builtin/workflows/builtin/ralph-runner.ts +0 -459
- package/dist/builtin/workflows/builtin/ralph.ts +0 -82
- package/dist/builtin/workflows/builtin/review-convergence.ts +0 -229
- package/dist/builtin/workflows/builtin/selection-math.ts +0 -156
- package/dist/builtin/workflows/builtin/steering-context.ts +0 -51
- package/dist/builtin/workflows/builtin/tournament-prompts.ts +0 -70
- package/dist/builtin/workflows/builtin/tournament-runner.ts +0 -400
- package/dist/builtin/workflows/builtin/tournament.ts +0 -73
- package/dist/builtin/workflows/builtin/verification-criteria.ts +0 -330
- package/dist/builtin/workflows/builtin/verification-prompts.ts +0 -206
- package/dist/builtin/workflows/builtin/verification-usage.ts +0 -44
|
@@ -3860,10 +3860,10 @@ function hasAssistantMessage(entries) {
|
|
|
3860
3860
|
return entries.some((entry) => entry.type === "message" && entry.message.role === "assistant");
|
|
3861
3861
|
}
|
|
3862
3862
|
function persistAppendedEntry(filePath, entries, entry, flushed) {
|
|
3863
|
-
if (!hasAssistantMessage(entries))
|
|
3864
|
-
return false;
|
|
3865
3863
|
if (flushed)
|
|
3866
3864
|
appendSessionEntry(filePath, entry);
|
|
3865
|
+
else if (!hasAssistantMessage(entries))
|
|
3866
|
+
return false;
|
|
3867
3867
|
else
|
|
3868
3868
|
appendSessionEntries(filePath, entries);
|
|
3869
3869
|
return true;
|
|
@@ -9931,6 +9931,8 @@ function appendDurableDisplayCard(session, message, delivery) {
|
|
|
9931
9931
|
const card = { ...message, excludeFromContext: true };
|
|
9932
9932
|
const admitted = message;
|
|
9933
9933
|
const intentEntryId = session.sessionManager.appendCustomMessageEntry(card.customType, card.content, card.display, card.details, true, { delivery }, admitted.stageAdmissionKey);
|
|
9934
|
+
if (admitted.stageAdmissionKey !== undefined)
|
|
9935
|
+
session.sessionManager.flush();
|
|
9934
9936
|
session.agent.state.messages.push(card);
|
|
9935
9937
|
return { card, intentEntryId };
|
|
9936
9938
|
}
|
|
@@ -10156,12 +10158,17 @@ var init_agent_session_persistent_custom_messages = __esm(() => {
|
|
|
10156
10158
|
});
|
|
10157
10159
|
|
|
10158
10160
|
// src/core/agent-session-custom-message-commit.ts
|
|
10161
|
+
function appendDurableStageAdmission(session, message) {
|
|
10162
|
+
session._appendCustomMessage(message);
|
|
10163
|
+
if (message.stageAdmissionKey !== undefined)
|
|
10164
|
+
session.sessionManager?.flush();
|
|
10165
|
+
}
|
|
10159
10166
|
async function commitAdmittedCustomMessage(session, appMessage, options) {
|
|
10160
10167
|
const owner = resolveWorkflowStageDeliveryTarget(session);
|
|
10161
10168
|
if (owner !== session)
|
|
10162
10169
|
return commitAdmittedCustomMessage(owner, appMessage, options);
|
|
10163
10170
|
const self = session;
|
|
10164
|
-
const useProtectedReconciliation = options?.persistWhenStreaming === true && options.triggerTurn === true
|
|
10171
|
+
const useProtectedReconciliation = options?.persistWhenStreaming === true && options.excludeFromContext !== true && (options.triggerTurn === true || options.stageAdmissionKey !== undefined);
|
|
10165
10172
|
if (options?.deliverAs === "nextTurn") {
|
|
10166
10173
|
self._pendingNextTurnMessages.push(appMessage);
|
|
10167
10174
|
} else if (self._queuedMessagesPaused) {
|
|
@@ -10175,20 +10182,20 @@ async function commitAdmittedCustomMessage(session, appMessage, options) {
|
|
|
10175
10182
|
} else if (self.isStreaming) {
|
|
10176
10183
|
self._pendingCustomMessages.push(appMessage);
|
|
10177
10184
|
} else {
|
|
10178
|
-
self
|
|
10185
|
+
appendDurableStageAdmission(self, appMessage);
|
|
10179
10186
|
}
|
|
10180
10187
|
} else if (options?.deliverAs === "interrupt" && options.triggerTurn) {
|
|
10181
10188
|
const interrupt = self._enqueueInterruptCustomMessage(appMessage, options);
|
|
10182
10189
|
self._workflowStageAdmission?.trackAdmittedWork(interrupt);
|
|
10183
10190
|
interrupt.catch(() => {});
|
|
10184
10191
|
} else if (self.isStreaming && options?.excludeFromContext === true && options.triggerTurn !== true && options.deliverAs === undefined) {
|
|
10185
|
-
self
|
|
10192
|
+
appendDurableStageAdmission(self, appMessage);
|
|
10186
10193
|
} else if (self.isStreaming && options?.triggerTurn === false) {
|
|
10187
10194
|
self._pendingCustomMessages.push(appMessage);
|
|
10188
10195
|
} else if (self.isStreaming && useProtectedReconciliation) {
|
|
10189
10196
|
await queueProtectedStreamingCustomMessage(self, appMessage, options?.deliverAs === "followUp" ? "followUp" : "steer");
|
|
10190
10197
|
} else if (self.isStreaming && options?.persistWhenStreaming === true) {
|
|
10191
|
-
self
|
|
10198
|
+
appendDurableStageAdmission(self, appMessage);
|
|
10192
10199
|
} else if (self.isStreaming && options?.triggerTurn !== false) {
|
|
10193
10200
|
self._queueAgentMessage(appMessage, options?.deliverAs === "followUp" ? "followUp" : "steer");
|
|
10194
10201
|
} else if (options?.triggerTurn) {
|
|
@@ -10211,7 +10218,7 @@ async function commitAdmittedCustomMessage(session, appMessage, options) {
|
|
|
10211
10218
|
self._continueQueuedAgentMessages().catch(() => {});
|
|
10212
10219
|
}
|
|
10213
10220
|
} else {
|
|
10214
|
-
self
|
|
10221
|
+
appendDurableStageAdmission(self, appMessage);
|
|
10215
10222
|
}
|
|
10216
10223
|
}
|
|
10217
10224
|
function _commitAdmittedCustomMessage(appMessage, options) {
|
|
@@ -21613,11 +21620,20 @@ import {
|
|
|
21613
21620
|
function isCodexFastModeSupportedProvider(provider) {
|
|
21614
21621
|
return provider === "openai" || provider === "openai-codex";
|
|
21615
21622
|
}
|
|
21616
|
-
function
|
|
21617
|
-
return
|
|
21623
|
+
function isGitHubCopilotModel(model) {
|
|
21624
|
+
return model.provider === "github-copilot";
|
|
21618
21625
|
}
|
|
21619
|
-
function
|
|
21620
|
-
|
|
21626
|
+
function isGitHubCopilotFastModeSupportedModel(model, credential) {
|
|
21627
|
+
if (!isGitHubCopilotModel(model) || credential?.type !== "oauth")
|
|
21628
|
+
return false;
|
|
21629
|
+
const fastModelIds = credential.fastModelIds;
|
|
21630
|
+
return Array.isArray(fastModelIds) && fastModelIds.every((modelId) => typeof modelId === "string") && fastModelIds.includes(`${model.id}-fast`);
|
|
21631
|
+
}
|
|
21632
|
+
function isCodexFastModeSupportedModel(model, copilotCredential) {
|
|
21633
|
+
return isCodexFastModeSupportedProvider(model.provider) || model.api === "openai-codex-responses" || model.id !== undefined && isGitHubCopilotFastModeSupportedModel({ provider: model.provider, id: model.id }, copilotCredential);
|
|
21634
|
+
}
|
|
21635
|
+
function hasSupportedCodexFastModeModel(models, copilotCredential) {
|
|
21636
|
+
return models.some((model) => isCodexFastModeSupportedModel(model, copilotCredential));
|
|
21621
21637
|
}
|
|
21622
21638
|
function isWorkflowStageOrchestrationContext(context) {
|
|
21623
21639
|
return context?.kind === "workflow-stage";
|
|
@@ -21628,11 +21644,11 @@ function getCodexFastModeScope(context) {
|
|
|
21628
21644
|
function isCodexFastModeEnabledForScope(settings, scope) {
|
|
21629
21645
|
return settings[scope];
|
|
21630
21646
|
}
|
|
21631
|
-
function shouldApplyCodexFastModeForScope(model, settings, scope) {
|
|
21632
|
-
return isCodexFastModeSupportedModel(model) && isCodexFastModeEnabledForScope(settings, scope);
|
|
21647
|
+
function shouldApplyCodexFastModeForScope(model, settings, scope, copilotCredential) {
|
|
21648
|
+
return isCodexFastModeSupportedModel(model, copilotCredential) && isCodexFastModeEnabledForScope(settings, scope);
|
|
21633
21649
|
}
|
|
21634
|
-
function shouldApplyCodexFastMode(model, settings, context) {
|
|
21635
|
-
return shouldApplyCodexFastModeForScope(model, settings, getCodexFastModeScope(context));
|
|
21650
|
+
function shouldApplyCodexFastMode(model, settings, context, copilotCredential) {
|
|
21651
|
+
return shouldApplyCodexFastModeForScope(model, settings, getCodexFastModeScope(context), copilotCredential);
|
|
21636
21652
|
}
|
|
21637
21653
|
function formatCodexFastModeModelLabel(modelName, enabled) {
|
|
21638
21654
|
return enabled ? `${modelName} fast` : modelName;
|
|
@@ -21773,7 +21789,7 @@ class FooterComponent {
|
|
|
21773
21789
|
pwd += ` • ${sessionName}`;
|
|
21774
21790
|
const modelName = state.model?.id || "no-model";
|
|
21775
21791
|
const fastModeSettings = this.session.settingsManager.getCodexFastModeSettings();
|
|
21776
|
-
const fastModeEnabled = state.model ? shouldApplyCodexFastMode(state.model, fastModeSettings, this.session.orchestrationContext) : false;
|
|
21792
|
+
const fastModeEnabled = state.model ? shouldApplyCodexFastMode(state.model, fastModeSettings, this.session.orchestrationContext, this.session.modelRuntime.getCredentialSnapshot?.("github-copilot")) : false;
|
|
21777
21793
|
let modelLabel2 = modelName;
|
|
21778
21794
|
if (state.model?.reasoning) {
|
|
21779
21795
|
const thinkingLevel = state.thinkingLevel || "off";
|
|
@@ -39361,14 +39377,18 @@ import { AsyncLocalStorage } from "node:async_hooks";
|
|
|
39361
39377
|
|
|
39362
39378
|
class WorkflowStageAdmissionBoundary {
|
|
39363
39379
|
open = true;
|
|
39364
|
-
completed
|
|
39380
|
+
completed;
|
|
39365
39381
|
inFlight = new Map;
|
|
39366
39382
|
pending = new Set;
|
|
39367
39383
|
invocationContext = new AsyncLocalStorage;
|
|
39368
39384
|
closePromise;
|
|
39369
39385
|
drainAdmittedWork;
|
|
39370
|
-
constructor(drainAdmittedWork =
|
|
39371
|
-
this.drainAdmittedWork = drainAdmittedWork;
|
|
39386
|
+
constructor(drainAdmittedWork = undefined, completedKeys = []) {
|
|
39387
|
+
this.drainAdmittedWork = drainAdmittedWork ?? (async () => {});
|
|
39388
|
+
this.completed = new Set(completedKeys);
|
|
39389
|
+
}
|
|
39390
|
+
static restore(entries, drainAdmittedWork) {
|
|
39391
|
+
return new WorkflowStageAdmissionBoundary(drainAdmittedWork, Array.from(entries).flatMap((entry) => entry.type === "custom_message" && typeof entry.stageAdmissionKey === "string" ? [entry.stageAdmissionKey] : []));
|
|
39372
39392
|
}
|
|
39373
39393
|
admit(key, deliver, routeLate) {
|
|
39374
39394
|
if (key !== undefined) {
|
|
@@ -39607,7 +39627,7 @@ class AgentSessionBase {
|
|
|
39607
39627
|
this._subagentPolicy = config.subagentPolicy;
|
|
39608
39628
|
this._systemPromptTransform = config.systemPromptTransform;
|
|
39609
39629
|
const stageContext = config.orchestrationContext?.kind === "workflow-stage" ? config.orchestrationContext : undefined;
|
|
39610
|
-
this._workflowStageAdmission = stageContext?.messageAdmission?.boundary ?? (stageContext ?
|
|
39630
|
+
this._workflowStageAdmission = stageContext?.messageAdmission?.boundary ?? (stageContext ? WorkflowStageAdmissionBoundary.restore(this.sessionManager.getBranch()) : undefined);
|
|
39611
39631
|
if (this._workflowStageAdmission && stageContext && stageContext.messageAdmission === undefined) {
|
|
39612
39632
|
stageContext.messageAdmission = {
|
|
39613
39633
|
boundary: this._workflowStageAdmission,
|
|
@@ -46559,6 +46579,31 @@ class RemoteQueuePause {
|
|
|
46559
46579
|
var init_remote_queue_pause = () => {};
|
|
46560
46580
|
|
|
46561
46581
|
// src/modes/interactive-engine/isolated-runtime.ts
|
|
46582
|
+
import { clampThinkingLevel as clampThinkingLevel5 } from "@bastani/pi-ai/compat";
|
|
46583
|
+
function applyPersistedModelDefault(session, model, alreadyInScope) {
|
|
46584
|
+
session.settingsManager.setDefaultModelAndProvider(model.provider, model.id);
|
|
46585
|
+
if (alreadyInScope || session.scopedModels.length === 0)
|
|
46586
|
+
return;
|
|
46587
|
+
const enabledModels = session.settingsManager.getEnabledModels();
|
|
46588
|
+
if (!enabledModels?.length)
|
|
46589
|
+
return;
|
|
46590
|
+
const modelReference = `${model.provider}/${model.id}`;
|
|
46591
|
+
if (enabledModels.some((pattern) => pattern.toLowerCase() === modelReference.toLowerCase()))
|
|
46592
|
+
return;
|
|
46593
|
+
session.settingsManager.setEnabledModels([...enabledModels, modelReference]);
|
|
46594
|
+
}
|
|
46595
|
+
function thinkingPersistTarget(result) {
|
|
46596
|
+
if (!result.provider || !result.modelId)
|
|
46597
|
+
return;
|
|
46598
|
+
return { provider: result.provider, modelId: result.modelId };
|
|
46599
|
+
}
|
|
46600
|
+
function applyPersistedThinkingDefault(session, level, target) {
|
|
46601
|
+
if (target) {
|
|
46602
|
+
session.settingsManager.setModelThinkingLevel(target.provider, target.modelId, level);
|
|
46603
|
+
return;
|
|
46604
|
+
}
|
|
46605
|
+
session.settingsManager.setDefaultThinkingLevel(level);
|
|
46606
|
+
}
|
|
46562
46607
|
var IsolatedInteractiveRuntime;
|
|
46563
46608
|
var init_isolated_runtime = __esm(() => {
|
|
46564
46609
|
init_agent_session_runtime();
|
|
@@ -46577,6 +46622,7 @@ var init_isolated_runtime = __esm(() => {
|
|
|
46577
46622
|
steeringMessages = [];
|
|
46578
46623
|
followUpMessages = [];
|
|
46579
46624
|
queueUpdateGeneration = 0;
|
|
46625
|
+
thinkingEpoch = 0;
|
|
46580
46626
|
pendingQueueClear;
|
|
46581
46627
|
engineCallbackActive = false;
|
|
46582
46628
|
queuePause;
|
|
@@ -46941,43 +46987,56 @@ var init_isolated_runtime = __esm(() => {
|
|
|
46941
46987
|
},
|
|
46942
46988
|
setModel: {
|
|
46943
46989
|
configurable: true,
|
|
46944
|
-
value: async (model) => {
|
|
46945
|
-
const selected = await this.client.setModel(model.provider, model.id);
|
|
46946
|
-
|
|
46990
|
+
value: async (model, options) => {
|
|
46991
|
+
const selected = await this.client.setModel(model.provider, model.id, options);
|
|
46992
|
+
const nextModel = session.modelRuntime.getModel(selected.provider, selected.id) ?? model;
|
|
46993
|
+
session.agent.state.model = nextModel;
|
|
46947
46994
|
this.resolveModelFallback();
|
|
46995
|
+
if (options?.persist === true)
|
|
46996
|
+
await this.syncPersistedModelCatalog(session, nextModel);
|
|
46948
46997
|
}
|
|
46949
46998
|
},
|
|
46950
46999
|
setThinkingLevel: {
|
|
46951
47000
|
configurable: true,
|
|
46952
|
-
value: (level) => {
|
|
46953
|
-
|
|
46954
|
-
|
|
47001
|
+
value: (level, options) => {
|
|
47002
|
+
const availableLevels = session.getAvailableThinkingLevels();
|
|
47003
|
+
const effectiveLevel = availableLevels.includes(level) ? level : session.model ? clampThinkingLevel5(session.model, level) : "off";
|
|
47004
|
+
session.agent.state.thinkingLevel = effectiveLevel;
|
|
47005
|
+
const epoch = ++this.thinkingEpoch;
|
|
47006
|
+
this.dispatchBestEffort("set thinking level", this.client.setThinkingLevelAck(level, options).then((result) => {
|
|
47007
|
+
this.applyThinkingAck(session, epoch, result, options?.persist === true);
|
|
47008
|
+
}));
|
|
46955
47009
|
}
|
|
46956
47010
|
},
|
|
46957
47011
|
cycleModel: {
|
|
46958
47012
|
configurable: true,
|
|
46959
|
-
value: async (direction) => {
|
|
47013
|
+
value: async (direction, options) => {
|
|
46960
47014
|
const previousModel = session.model;
|
|
46961
|
-
const result = await this.client.cycleModel(direction);
|
|
47015
|
+
const result = await this.client.cycleModel(direction, options);
|
|
46962
47016
|
if (!result)
|
|
46963
47017
|
return;
|
|
46964
47018
|
const model = session.modelRuntime.getModel(result.model.provider, result.model.id) ?? result.model;
|
|
46965
47019
|
session.agent.state.model = model;
|
|
46966
47020
|
session.agent.state.thinkingLevel = result.thinkingLevel;
|
|
46967
47021
|
this.resolveModelFallbackAfterExplicitModelSelection(previousModel, model);
|
|
47022
|
+
if (options?.persist === true)
|
|
47023
|
+
await this.syncPersistedModelCatalog(session, model);
|
|
46968
47024
|
return { ...result, model };
|
|
46969
47025
|
}
|
|
46970
47026
|
},
|
|
46971
47027
|
cycleThinkingLevel: {
|
|
46972
47028
|
configurable: true,
|
|
46973
|
-
value: () => {
|
|
47029
|
+
value: (options) => {
|
|
46974
47030
|
const levels = session.getAvailableThinkingLevels();
|
|
46975
47031
|
if (levels.length <= 1)
|
|
46976
47032
|
return;
|
|
46977
47033
|
const current = levels.indexOf(session.thinkingLevel);
|
|
46978
47034
|
const level = levels[(current + 1) % levels.length];
|
|
46979
47035
|
session.agent.state.thinkingLevel = level;
|
|
46980
|
-
|
|
47036
|
+
const epoch = ++this.thinkingEpoch;
|
|
47037
|
+
this.dispatchBestEffort("cycle thinking level", this.client.setThinkingLevelAck(level, options).then((result) => {
|
|
47038
|
+
this.applyThinkingAck(session, epoch, result, options?.persist === true);
|
|
47039
|
+
}));
|
|
46981
47040
|
return level;
|
|
46982
47041
|
}
|
|
46983
47042
|
},
|
|
@@ -47021,6 +47080,14 @@ var init_isolated_runtime = __esm(() => {
|
|
|
47021
47080
|
this.engineCallbackActive = false;
|
|
47022
47081
|
}
|
|
47023
47082
|
}
|
|
47083
|
+
applyThinkingAck(session, epoch, result, persist) {
|
|
47084
|
+
if (persist) {
|
|
47085
|
+
applyPersistedThinkingDefault(session, result.level, thinkingPersistTarget(result));
|
|
47086
|
+
}
|
|
47087
|
+
if (epoch === this.thinkingEpoch) {
|
|
47088
|
+
session.agent.state.thinkingLevel = result.level;
|
|
47089
|
+
}
|
|
47090
|
+
}
|
|
47024
47091
|
dispatchBestEffort(label, operation) {
|
|
47025
47092
|
operation.catch((error) => {
|
|
47026
47093
|
if (this.health.isRecovering())
|
|
@@ -47061,6 +47128,12 @@ var init_isolated_runtime = __esm(() => {
|
|
|
47061
47128
|
}
|
|
47062
47129
|
});
|
|
47063
47130
|
}
|
|
47131
|
+
async syncPersistedModelCatalog(session, model) {
|
|
47132
|
+
const alreadyInScope = session.scopedModels.some((scoped) => scoped.model.provider === model.provider && scoped.model.id === model.id);
|
|
47133
|
+
const catalog = await this.client.requestInternal({ type: "get_available_models" });
|
|
47134
|
+
this.remoteModelCatalog.apply(catalog);
|
|
47135
|
+
applyPersistedModelDefault(session, model, alreadyInScope);
|
|
47136
|
+
}
|
|
47064
47137
|
refreshSessionView() {
|
|
47065
47138
|
const session = super.session;
|
|
47066
47139
|
const sessionFile = session.sessionFile;
|
|
@@ -47100,6 +47173,7 @@ var init_isolated_runtime = __esm(() => {
|
|
|
47100
47173
|
session.agent.state.model = event.model;
|
|
47101
47174
|
break;
|
|
47102
47175
|
case "thinking_level_changed":
|
|
47176
|
+
this.thinkingEpoch += 1;
|
|
47103
47177
|
session.agent.state.thinkingLevel = event.level;
|
|
47104
47178
|
break;
|
|
47105
47179
|
case "session_info_changed":
|
|
@@ -48313,7 +48387,7 @@ var init_slash_commands = __esm(() => {
|
|
|
48313
48387
|
{ name: "tree", description: "Navigate session tree (switch branches)" },
|
|
48314
48388
|
{ name: "thinking", description: "Set thinking level", argumentHint: "<level>" },
|
|
48315
48389
|
{ name: "scoped-models", description: "Enable/disable models for ctrl+p cycling" },
|
|
48316
|
-
{ name: "fast", description: "Configure
|
|
48390
|
+
{ name: "fast", description: "Configure OpenAI fast mode for chat and workflows in supported models" },
|
|
48317
48391
|
{ name: "export", description: "Export session (HTML default, or specify path: .html/.jsonl)" },
|
|
48318
48392
|
{ name: "import", description: "Import and resume a session from a JSONL file" },
|
|
48319
48393
|
{ name: "share", description: "Share session as a secret GitHub gist" },
|
|
@@ -49765,7 +49839,7 @@ var init_interactive_autocomplete = __esm(() => {
|
|
|
49765
49839
|
return [...this.session.modelRuntime.getAvailableSnapshot()];
|
|
49766
49840
|
};
|
|
49767
49841
|
InteractiveModeBase.prototype.hasCodexFastModeSupportedModels = function() {
|
|
49768
|
-
return hasSupportedCodexFastModeModel(this.getCodexFastModeCandidateModels());
|
|
49842
|
+
return hasSupportedCodexFastModeModel(this.getCodexFastModeCandidateModels(), this.session.modelRuntime.getCredentialSnapshot?.("github-copilot"));
|
|
49769
49843
|
};
|
|
49770
49844
|
InteractiveModeBase.prototype.buildRemoteSlashCommands = function(localCommands) {
|
|
49771
49845
|
const remote = getInteractiveEngineRemoteCommands(this.runtimeHost);
|
|
@@ -50453,7 +50527,7 @@ var init_interactive_startup = __esm(() => {
|
|
|
50453
50527
|
if (!model) {
|
|
50454
50528
|
return modelLabel2;
|
|
50455
50529
|
}
|
|
50456
|
-
const fastModeEnabled = shouldApplyCodexFastMode(model, this.session.settingsManager.getCodexFastModeSettings(), this.session.orchestrationContext);
|
|
50530
|
+
const fastModeEnabled = shouldApplyCodexFastMode(model, this.session.settingsManager.getCodexFastModeSettings(), this.session.orchestrationContext, this.session.modelRuntime.getCredentialSnapshot?.("github-copilot"));
|
|
50457
50531
|
return formatCodexFastModeModelLabel(modelLabel2, fastModeEnabled);
|
|
50458
50532
|
};
|
|
50459
50533
|
InteractiveModeBase.prototype.getStartupIdentityText = function(maxWidth, gap = 0, manifestoPhase = 4) {
|
|
@@ -54968,7 +55042,7 @@ var init_interactive_selectors = __esm(() => {
|
|
|
54968
55042
|
});
|
|
54969
55043
|
|
|
54970
55044
|
// src/modes/interactive/interactive-model-routing.ts
|
|
54971
|
-
import { clampThinkingLevel as
|
|
55045
|
+
import { clampThinkingLevel as clampThinkingLevel6 } from "@bastani/pi-ai/compat";
|
|
54972
55046
|
function resolveThinkingSelectorDefault(rawDefault, availableLevels, model) {
|
|
54973
55047
|
if (rawDefault === undefined)
|
|
54974
55048
|
return;
|
|
@@ -54976,7 +55050,7 @@ function resolveThinkingSelectorDefault(rawDefault, availableLevels, model) {
|
|
|
54976
55050
|
return rawDefault;
|
|
54977
55051
|
if (!model)
|
|
54978
55052
|
return availableLevels.includes("off") ? "off" : availableLevels[0];
|
|
54979
|
-
const clamped =
|
|
55053
|
+
const clamped = clampThinkingLevel6(model, rawDefault);
|
|
54980
55054
|
if (availableLevels.includes(clamped))
|
|
54981
55055
|
return clamped;
|
|
54982
55056
|
return availableLevels.includes("off") ? "off" : availableLevels[0];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/web-access",
|
|
3
|
-
"version": "0.9.16-alpha.
|
|
3
|
+
"version": "0.9.16-alpha.8",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "Atomic extension for web search, URL fetching, GitHub repo cloning, PDF/video extraction. Fork of: https://github.com/nicobailon/pi-web-access",
|
|
6
6
|
"contributors": [
|
|
@@ -6,6 +6,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.9.16-alpha.8] - 2026-08-27
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Added a dedicated `workflow answer` action for responding to pending primitive and structured human-in-the-loop prompts without exposing stage-message delivery semantics.
|
|
14
|
+
- Added durable pending-stage message state for ordinary Intercom delivery, including FIFO delivery before the first model turn, resume/replay persistence, exactly-once stage-attempt handling, lifecycle failure notifications, and guidance for propagating material updates to known workflow stages that have not started. ([#2717](https://github.com/bastani-inc/atomic/issues/2717))
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Periodic workflow heartbeat prompts now guide supervising agents to use ordinary Intercom when steering or communication is useful, match an update's reach to the expanded workflow topology, send shared scope or acceptance changes consistently across every relevant live and known unstarted worker/reviewer stage, account for immediate and queued pre-first-turn delivery, and use workflow pause, resume, interrupt, or quit for run control.
|
|
19
|
+
|
|
20
|
+
### Removed
|
|
21
|
+
|
|
22
|
+
- Removed the public `workflow send` action and its stage-chat delivery modes. Use `workflow answer` for pending human-input prompts, `workflow resume` for paused control, and ordinary Intercom for live or deferred workflow-stage communication.
|
|
23
|
+
|
|
9
24
|
## [0.9.16-alpha.7] - 2026-08-26
|
|
10
25
|
|
|
11
26
|
### Changed
|