@xopcai/xopc 0.0.404 → 0.0.406
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/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CdwFK70g.js → agent-avatar-dicebear-BE3ci_lj.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-BMj9HwIQ.js → agent-defaults-settings-panel-DzDaum4Y.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-hrm6V8Dp.js → agents-BfC3FYYe.js} +3 -3
- package/dist/gateway/static/root/assets/{app-management-settings-panel-Rg9jOmoj.js → app-management-settings-panel-BDbJKxa-.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-S3yp0GUO.js → appearance-settings-CEOOrVYb.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-ChrJSB_2.js → apps-page-CpoG_3PG.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-J7hwA5cs.js → archive-plugin-B7pzPErg.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-Cesz1cjw.js → automations-page-CcQjEiqk.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-DdopDyED.js → automations-workspace-BVTP3pzt.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-Bg4Se8Kg.js → binary-plugins-D5kTu6gH.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Bw1sO9YH.js → block-editor-CnW6rF_e.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-Y46Mf8aY.js → browser-automation-inputs-CAcUtInP.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-BcNjBdFQ.js → browser-automations-page-DT7-lnPN.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-ByeqxrSF.js → browser-settings-page-ByK8znt2.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-CIv3LUQk.js → capabilities-Dl3LttAm.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-page-BUTQSo3A.js → capabilities-page-C8tv6M_O.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-B-Uwmjbo.js → capabilities-settings-panel-OVLgL6yL.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-header-actions-BGGJKzPL.js → capability-header-actions-jztljvVW.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-z6iuM4HE.js → channels-D8BKMMPW.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-oMmP0flJ.js → chat-terminal-dock-BVlFOKJj.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-CERhSG5W.js → computer-settings-page-CvQgrTwb.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-DyW3mLTh.js → connector-service-page-BNcTUa99.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-CdMwhiio.js → connectors-page-CWlLRQpK.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-CO3Jhdzg.js → date-picker-BKUmdSp7.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-DbyMpo5J.js → dependency-picker-BarQvwoO.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-DJ9OAPJs.js → desktop-pet-IvADYxyi.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CNrNXWlk.js → desktop-pet-settings-y6WzhGEK.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-TzK-VCuf.js → device-pairing-wizard-D3IUZ8xW.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-BmFgRA8G.js → directory-picker-path-field-DnEvwMTm.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-C3ZpHHYc.js → extension-debug-page-CCvuK1m0.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-gfOwpT2R.js → extension-page-DegRwY3R.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BS7cDqZJ.js → extension-settings-page-B8UQgGgZ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-UB6hyqcj.js → gateway-settings-DlLyLsXY.js} +1 -1
- package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-BRfDRn2k.js → highlighted-body-KQOG7T2V-MjAoJQJX.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-DBUnR1DO.js → home-page-DAYtNK3o.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-BoMWmqwF.js → image-generation-api-SQDixWjO.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-CPiPsiEP.js → imports-page-1ZId0Ng0.js} +1 -1
- package/dist/gateway/static/root/assets/{index-DmURUvvA.js → index-K2cy4f-3.js} +116 -116
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-D9y8h4dR.js → keyboard-shortcuts-settings-yMwBt1Sv.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-DoAmV6on.js → local-app-workbench-page-a7J0NPIs.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-CE6Ag8oQ.js → local-apps-page-CF6_kS9C.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-DFysUb2k.js → logs-page-C8y5yhoM.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-CmXPsu0I.js → management-settings-C7dL_jNu.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DvfdiczR.js → media-plugins-UYX1YivF.js} +1 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-7zpLTDLZ.js +1 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-BpddDFQt.js → note-detail-panel-Bxm523Up.js} +3 -3
- package/dist/gateway/static/root/assets/note-image-lightbox-B7ARnjnB.js +1 -0
- package/dist/gateway/static/root/assets/{notes-page-DQ4KZsWt.js → notes-page-BOeS2v6x.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-capture-button-BcxVEGa2.js → page-context-capture-button-DOrPS73o.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-CCQDxb7E.js → personal-page-BujiHops.js} +1 -1
- package/dist/gateway/static/root/assets/{plugin-details-dialog-CGFQ_-bG.js → plugin-details-dialog-XOzQrJQN.js} +1 -1
- package/dist/gateway/static/root/assets/{plugin-presentation-DF1gfuGf.js → plugin-presentation-CPEwVLd4.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-CXjjpXVx.js → preview-open-alternatives-BP9C0kH3.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-DqiyvM4c.js → product-open-page-D151rJVy.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-f7Q4giA3.js → product-preview-content-CAo0XpP-.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-CxB_kF0F.js +1 -0
- package/dist/gateway/static/root/assets/{projects-page-DO_pIhy-.js → projects-page-Dvu_3c2g.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-BFtELmg0.js → remote-access-hub-CbzBV_BL.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-B9Beu-oK.js → runtime-tools-settings-panel-DyLxlqWV.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-ZAX7C5uI.js → schema-form-ClP4uPSj.js} +1 -1
- package/dist/gateway/static/root/assets/{session-manager-BUMUjup5.js → session-manager-DMDBMYfh.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-D27knqOl.js → sessions-page-CvfoPeM6.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BOkrHL8q.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-BTUFu5KS.js → settings-form-section-B4NShgv-.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-YFr6zzh7.js → settings-page-C54bw5J9.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-C5Jszsd1.js → setup-status-panel-BVKQ2inq.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-CsfrvY_G.js → share-preview-page-BxN9t3MD.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-BW6BNot0.js → shares-settings-BOa9NAUc.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-o3HSgF_K.js → skill-api-E0E-MH1S.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-BJsPnE87.js → skill-reload-api-DEN6tOwG.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-Kuf2t7MG.js → skills-page-CeNVBQG9.js} +1 -1
- package/dist/gateway/static/root/assets/{style-DOz6lLJB.js → style-Bs9x3WBj.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-B69rR6vw.js → system-settings-panel-DpQPaJId.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-DzK53B5p.js +2 -0
- package/dist/gateway/static/root/assets/{task-expandable-content-BZCJqajv.js → task-expandable-content-BoGtWYbk.js} +1 -1
- package/dist/gateway/static/root/assets/{tasks-PuIUgF9L.js → tasks-B4bZpO6O.js} +1 -1
- package/dist/gateway/static/root/assets/{tracing-settings-page-BIq3Ayeg.js → tracing-settings-page-BUUnZfZW.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-V9pJ8fUo.js → tunnel-api-3GopOQ_S.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-DZdpti28.js → usage-page-B8j47CWQ.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-BnMIUc_5.js → use-autosave-CYIuWnRn.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-BEgJ97hp.js → user-model-page-DxcH74eP.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-1h6fMaZL.js → voice-api-key-field-BN37Lklj.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-CVNqSNz8.js → work-discovery-overlay-C_bcAAX6.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Dq63AthQ.js → workflow-run-setup-panel-B5oKCzTn.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-CfA1iwZu.js → workflows-page-Bo5b5t_9.js} +1 -1
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-BsW2acj1.js → xopc-cloud-account-card-DGGi4zVC.js} +1 -1
- package/dist/gateway/static/root/index.html +4 -4
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/tasks.js +27 -8
- package/dist/src/agent/agent-manager.js +1 -1
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/external-tools/cliProvider.js +2 -2
- package/dist/src/agent/external-tools/composio-provider.js +2 -2
- package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
- package/dist/src/agent/service.js +1 -1
- package/dist/src/agent/skills/index.js +1 -1
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/tools/personal-read-tool.js +1 -1
- package/dist/src/agent/tools/xopc-use-tool.js +2 -2
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/agent-catalog/migrations/legacy-config-cutover.js +1 -1
- package/dist/src/agent-catalog/repository.js +1 -1
- package/dist/src/automations/capabilities/drafts.js +1 -1
- package/dist/src/automations/capabilities/write.d.ts +14 -0
- package/dist/src/automations/domain/validation.d.ts +28 -0
- package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -1
- package/dist/src/bootstrap/application-state.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.js +1 -1
- package/dist/src/capabilities/runtime/dispatcher.js +1 -1
- package/dist/src/capabilities/runtime/product.js +1 -1
- package/dist/src/cli/commands/agents.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +2 -2
- package/dist/src/cli/commands/extension.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/execution-environments/local-worktree-manager.js +1 -1
- package/dist/src/extensions/agent-plugins/skill-catalog.js +1 -1
- package/dist/src/extensions/agent-plugins/validation.js +1 -1
- package/dist/src/extensions/update.js +1 -1
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/hono/routes/agents.js +1 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/config.js +1 -1
- package/dist/src/gateway/hono/routes/notes.js +2 -2
- package/dist/src/gateway/hono/routes/projects.js +2 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
- package/dist/src/gateway/hono/routes/tasks.js +3 -2
- package/dist/src/gateway/image-generation-setup.js +1 -1
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service/run-gateway-agent.js +1 -0
- package/dist/src/gateway/service.js +6 -6
- package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
- package/dist/src/home-intelligence/host.js +2 -2
- package/dist/src/imports/importService.js +1 -1
- package/dist/src/infra/update-runner.js +1 -1
- package/dist/src/local-apps/service.js +1 -1
- package/dist/src/personal-agent/service.js +1 -1
- package/dist/src/providers/prompt-cache-lifecycle.d.ts +1 -1
- package/dist/src/providers/prompt-cache-lifecycle.js +1 -1
- package/dist/src/runtime-tools/archive.js +1 -1
- package/dist/src/storage/sqlite/migrations/258_task_phase_changes.sql +20 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/tasks/capabilities/read.js +3 -2
- package/dist/src/tasks/capabilities/write.js +3 -3
- package/dist/src/tasks/task-application-service.d.ts +2 -1
- package/dist/src/tasks/task-application-service.js +80 -12
- package/dist/src/tasks/task-collaboration-delivery.js +2 -1
- package/dist/src/tasks/task-context-assembler.js +2 -1
- package/dist/src/tasks/task-read-model-projector.js +13 -5
- package/dist/src/tasks/task-repository.d.ts +11 -1
- package/dist/src/tasks/task-repository.js +42 -7
- package/dist/src/tasks/task-run-coordinator.d.ts +2 -0
- package/dist/src/tasks/task-run-coordinator.js +26 -17
- package/dist/src/tasks/task-run-repository.js +5 -2
- package/dist/src/tui/backends/embedded-backend.js +1 -1
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/package.json +4 -4
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-SuiLTd5Y.js +0 -1
- package/dist/gateway/static/root/assets/note-image-lightbox-CMLVzPsQ.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-PBK7vXK5.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CDzdr1zW.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-DOb97OLI.js +0 -2
|
@@ -156,13 +156,48 @@ var init_task_repository = __esmMin((() => {
|
|
|
156
156
|
}
|
|
157
157
|
setLifecycle(input) {
|
|
158
158
|
if (input.phase === "closed" !== Boolean(input.resolution)) throw new Error("Closed tasks require a resolution and open tasks cannot have one");
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
159
|
+
return runSqliteWriteTransaction((db) => {
|
|
160
|
+
const current = this.get(input.taskId);
|
|
161
|
+
if (!current || current.version !== input.expectedVersion) return void 0;
|
|
162
|
+
if (current.phase === input.phase && current.resolution === input.resolution) return current;
|
|
163
|
+
const now = Math.max(input.now ?? Date.now(), current.updatedAt + 1);
|
|
164
|
+
const boardRank = current.phase === input.phase ? current.boardRank : Number(db.prepare("SELECT COALESCE(MAX(board_rank), 0) + 1024 AS board_rank FROM tasks WHERE project_id IS ? AND phase = ?").get(current.projectId ?? null, input.phase).board_rank);
|
|
165
|
+
if (db.prepare(`UPDATE tasks SET phase = ?, resolution = ?, closed_at = ?, board_rank = ?,
|
|
166
|
+
version = version + 1, updated_at = ?, manual_phase_revision = manual_phase_revision + ?
|
|
167
|
+
WHERE task_id = ? AND version = ?`).run(input.phase, input.resolution ?? null, input.phase === "closed" ? now : null, boardRank, now, input.manual ? 1 : 0, input.taskId, input.expectedVersion).changes === 0) return void 0;
|
|
168
|
+
db.prepare(`INSERT INTO task_phase_changes (id, task_id, from_phase, to_phase,
|
|
169
|
+
from_resolution, to_resolution, actor_json, source, operation_id, run_id, task_version, created_at)
|
|
170
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(randomUUID(), current.id, current.phase, input.phase, current.resolution ?? null, input.resolution ?? null, JSON.stringify(input.actor ?? { kind: "system" }), input.source ?? "runtime", input.operationId ?? currentOperationId() ?? null, input.runId ?? null, current.version + 1, now);
|
|
171
|
+
return this.get(input.taskId);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
phaseChanges(taskId) {
|
|
175
|
+
return getSqliteDatabase().prepare(`SELECT * FROM task_phase_changes WHERE task_id = ? ORDER BY task_version`).all(taskId).map((row) => ({
|
|
176
|
+
id: String(row.id),
|
|
177
|
+
taskId: String(row.task_id),
|
|
178
|
+
fromPhase: row.from_phase,
|
|
179
|
+
toPhase: row.to_phase,
|
|
180
|
+
...row.from_resolution ? { fromResolution: row.from_resolution } : {},
|
|
181
|
+
...row.to_resolution ? { toResolution: row.to_resolution } : {},
|
|
182
|
+
actor: JSON.parse(String(row.actor_json)),
|
|
183
|
+
source: row.source,
|
|
184
|
+
...row.operation_id ? { operationId: String(row.operation_id) } : {},
|
|
185
|
+
...row.run_id ? { runId: String(row.run_id) } : {},
|
|
186
|
+
taskVersion: Number(row.task_version),
|
|
187
|
+
createdAt: Number(row.created_at)
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
/** A new explicit execution authorizes automation for the current manual revision. */
|
|
191
|
+
authorizeAutomaticPhase(taskId) {
|
|
192
|
+
getSqliteDatabase().prepare("UPDATE tasks SET automatic_phase_revision = manual_phase_revision WHERE task_id = ?").run(taskId);
|
|
193
|
+
}
|
|
194
|
+
automaticStartAllowed(taskId) {
|
|
195
|
+
return Boolean(getSqliteDatabase().prepare(`SELECT 1 FROM tasks
|
|
196
|
+
WHERE task_id = ? AND manual_phase_revision = automatic_phase_revision`).get(taskId));
|
|
197
|
+
}
|
|
198
|
+
runPhaseUnchanged(taskId, runId) {
|
|
199
|
+
return Boolean(getSqliteDatabase().prepare(`SELECT 1 FROM tasks t JOIN task_runs r ON r.task_id = t.task_id
|
|
200
|
+
WHERE t.task_id = ? AND r.run_id = ? AND t.manual_phase_revision = r.manual_phase_revision`).get(taskId, runId));
|
|
166
201
|
}
|
|
167
202
|
reorder(input) {
|
|
168
203
|
const current = this.get(input.taskId);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TurnOrigin } from '@xopcai/endpoint-tools-protocol';
|
|
1
2
|
import type { TaskEvidence, TaskRunReceipt, TurnOutcome } from '@xopcai/gateway-contract';
|
|
2
3
|
import type { ExecutionContext } from './execution-context.js';
|
|
3
4
|
export declare class TaskRunCoordinator {
|
|
@@ -7,6 +8,7 @@ export declare class TaskRunCoordinator {
|
|
|
7
8
|
static start(input: {
|
|
8
9
|
runId: string;
|
|
9
10
|
context: ExecutionContext;
|
|
11
|
+
inputOrigin?: TurnOrigin;
|
|
10
12
|
fallbackObjective: string;
|
|
11
13
|
timeoutMs?: number;
|
|
12
14
|
}): TaskRunCoordinator | undefined;
|
|
@@ -37,32 +37,41 @@ var TaskRunCoordinator = class TaskRunCoordinator {
|
|
|
37
37
|
if (!input.context.taskId) return void 0;
|
|
38
38
|
const tasks = new TaskRepository();
|
|
39
39
|
const task = tasks.get(input.context.taskId);
|
|
40
|
-
if (!task || task.phase === "closed") return void 0;
|
|
40
|
+
if (!task || task.phase === "closed" && task.resolution !== "done") return void 0;
|
|
41
41
|
const runs = new TaskRunRepository();
|
|
42
42
|
if (runs.listActiveWaits(task.id).length > 0) return void 0;
|
|
43
43
|
let run = runs.get(input.runId);
|
|
44
44
|
if (run && (run.taskId !== task.id || run.parentRunId || run.conversationId && run.conversationId !== input.context.conversationId)) return void 0;
|
|
45
45
|
if (!run) {
|
|
46
|
+
if (task.phase === "closed") return void 0;
|
|
46
47
|
if (runs.getActiveRoot(task.id)) return void 0;
|
|
47
48
|
const agentId = task.delegateAgentId ?? input.context.agentId;
|
|
48
49
|
if (!agentId) return void 0;
|
|
49
|
-
run =
|
|
50
|
-
id
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
50
|
+
run = runSqliteWriteTransaction(() => {
|
|
51
|
+
if (tasks.require(task.id).version !== task.version) return void 0;
|
|
52
|
+
if (input.inputOrigin?.type === "endpoint" || input.inputOrigin?.type === "channel" || input.inputOrigin?.type === "system" && input.inputOrigin.source === "cli") tasks.authorizeAutomaticPhase(task.id);
|
|
53
|
+
else if (!tasks.automaticStartAllowed(task.id)) return void 0;
|
|
54
|
+
const created = runs.create({
|
|
55
|
+
id: input.runId,
|
|
56
|
+
taskId: task.id,
|
|
57
|
+
executorKind: "agent",
|
|
58
|
+
executorRef: { agentId },
|
|
59
|
+
trigger: { kind: input.context.triggerKind },
|
|
60
|
+
correlationId: input.runId,
|
|
61
|
+
idempotencyKey: input.runId,
|
|
62
|
+
contractVersion: task.latestContractVersion,
|
|
63
|
+
conversationId: input.context.conversationId,
|
|
64
|
+
retryPolicy: { maxAttempts: 3 }
|
|
65
|
+
});
|
|
66
|
+
if (task.phase !== "active") tasks.setLifecycle({
|
|
67
|
+
taskId: task.id,
|
|
68
|
+
expectedVersion: task.version,
|
|
69
|
+
phase: "active",
|
|
70
|
+
runId: created.id
|
|
71
|
+
});
|
|
72
|
+
return created;
|
|
65
73
|
});
|
|
74
|
+
if (!run) return void 0;
|
|
66
75
|
}
|
|
67
76
|
const startingQueuedRun = run.status === "queued";
|
|
68
77
|
if (startingQueuedRun) {
|
|
@@ -117,6 +117,9 @@ var init_task_run_repository = __esmMin((() => {
|
|
|
117
117
|
causation_id, idempotency_key, contract_version, conversation_id,
|
|
118
118
|
queued_at, scheduled_at, retry_policy_json, retry_of_run_id, version
|
|
119
119
|
) VALUES (?, ?, ?, ?, ?, 'queued', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1)`).run(id, input.taskId, rootRunId, input.parentRunId ?? null, input.parentRunId ? 1 : attemptRow.attempt, input.executorKind, JSON.stringify(input.executorRef), JSON.stringify(input.trigger), input.correlationId, input.causationId ?? null, input.idempotencyKey, input.contractVersion, input.conversationId ?? null, now, input.scheduledAt ?? null, JSON.stringify(input.retryPolicy ?? {}), input.retryOfRunId ?? null);
|
|
120
|
+
db.prepare(`UPDATE task_runs SET manual_phase_revision = COALESCE(
|
|
121
|
+
(SELECT manual_phase_revision FROM task_runs WHERE run_id = ?),
|
|
122
|
+
(SELECT manual_phase_revision FROM tasks WHERE task_id = ?)) WHERE run_id = ?`).run(input.retryOfRunId ?? input.parentRunId ?? null, input.taskId, id);
|
|
120
123
|
this.appendEvent(db, id, "task_run.created", {
|
|
121
124
|
executorKind: input.executorKind,
|
|
122
125
|
scheduledAt: input.scheduledAt
|
|
@@ -162,7 +165,7 @@ var init_task_run_repository = __esmMin((() => {
|
|
|
162
165
|
WHERE wait.task_run_id = task_runs.run_id AND wait.status = 'active'
|
|
163
166
|
))
|
|
164
167
|
)
|
|
165
|
-
AND EXISTS (SELECT 1 FROM tasks task WHERE task.task_id = task_runs.task_id AND task.phase != 'closed')
|
|
168
|
+
AND EXISTS (SELECT 1 FROM tasks task WHERE task.task_id = task_runs.task_id AND (task.phase != 'closed' OR task.resolution = 'done'))
|
|
166
169
|
AND NOT EXISTS (SELECT 1 FROM task_waits wait WHERE wait.task_id = task_runs.task_id AND wait.status = 'active')
|
|
167
170
|
AND NOT EXISTS (SELECT 1 FROM session_inputs input WHERE input.task_run_id = task_runs.run_id AND input.status IN ('queued','running'))
|
|
168
171
|
AND (? IS NULL OR executor_kind = ?)
|
|
@@ -274,7 +277,7 @@ var init_task_run_repository = __esmMin((() => {
|
|
|
274
277
|
const execution = db.prepare("SELECT active_conversation_id FROM task_conversation_state WHERE task_id = ?").get(run.taskId);
|
|
275
278
|
if (execution?.active_conversation_id && execution.active_conversation_id !== run.conversationId) return false;
|
|
276
279
|
const task = new TaskRepository().require(run.taskId);
|
|
277
|
-
if (task.phase !== "
|
|
280
|
+
if (task.phase === "closed" && task.resolution !== "done" || run.contractVersion !== task.latestContractVersion) return false;
|
|
278
281
|
const attempts = Number(run.policySnapshot.continuationAttempts ?? 0);
|
|
279
282
|
const maxAttempts = Math.max(1, Math.min(3, Number(run.retryPolicy.maxAttempts ?? 1)));
|
|
280
283
|
if (!Number.isFinite(attempts) || !Number.isFinite(maxAttempts) || attempts >= maxAttempts - 1) return false;
|
|
@@ -10,6 +10,7 @@ import { getSessionMetadata } from "../../storage/sqlite/session-read-repository
|
|
|
10
10
|
import { init_sqlite } from "../../storage/sqlite/index.js";
|
|
11
11
|
import { normalizeAgentId } from "../../agent-catalog/id.js";
|
|
12
12
|
import { init_agent_scope, listAgentEntries } from "../../agent/agent-scope.js";
|
|
13
|
+
import { AgentCatalogService } from "../../agent-catalog/service.js";
|
|
13
14
|
import { init_paths } from "../../config/paths.js";
|
|
14
15
|
import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
|
|
15
16
|
import { init_agent_session_key, resolveAgentIdFromConversationId } from "../../routing/agent-session-key.js";
|
|
@@ -23,7 +24,6 @@ import { buildSessionTimeline } from "../../session/transcript-outline.js";
|
|
|
23
24
|
import { transcriptRowsToClientHistory } from "../../session/client-history.js";
|
|
24
25
|
import { createCreateShareTool, isShareToolAvailable } from "../../agent/tools/create-share-tool.js";
|
|
25
26
|
import { evictEmbeddedSessionRunner } from "../../agent/embedded/session-runner.js";
|
|
26
|
-
import { AgentCatalogService } from "../../agent-catalog/service.js";
|
|
27
27
|
import { SessionIndex } from "../../session/manager.js";
|
|
28
28
|
import "../../session/index.js";
|
|
29
29
|
import { parseModelRef } from "../../agent/models/selection.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { init_agent_scope, resolveAgentProfileDir } from "../../agent/agent-scope.js";
|
|
2
|
-
import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
|
|
3
2
|
import { DEFAULT_SOUL_FILENAME } from "../../agent/context/workspace.js";
|
|
3
|
+
import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
|
|
4
4
|
import { loadProfileBootstrapFiles } from "../../agent/bootstrap/load-bootstrap-files.js";
|
|
5
5
|
import { join } from "node:path";
|
|
6
6
|
import { statSync } from "node:fs";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xopcai/xopc",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.406",
|
|
4
4
|
"description": "Local-first personal AI with Ada, task delegation, files, projects, workflows, and automations. Use cloud or local models.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -169,11 +169,11 @@
|
|
|
169
169
|
"vue": "^3.5.35",
|
|
170
170
|
"xlsx": "file:web/vendor/xlsx-0.20.3.tgz",
|
|
171
171
|
"@xopcai/browser-control-contract": "0.1.0",
|
|
172
|
-
"@xopcai/endpoint-tools-client": "0.0.0",
|
|
173
|
-
"@xopcai/endpoint-tools-protocol": "0.0.0",
|
|
174
172
|
"@xopcai/computer-control-contract": "0.1.0",
|
|
175
|
-
"@xopcai/
|
|
173
|
+
"@xopcai/endpoint-tools-protocol": "0.0.0",
|
|
176
174
|
"@xopcai/gateway-contract": "0.0.0",
|
|
175
|
+
"@xopcai/image-providers": "0.1.0",
|
|
176
|
+
"@xopcai/endpoint-tools-client": "0.0.0",
|
|
177
177
|
"@xopcai/realtime-client": "0.0.0",
|
|
178
178
|
"@xopcai/realtime-protocol": "0.0.0"
|
|
179
179
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Gc as e}from"./index-DmURUvvA.js";export{e as Mermaid};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./index-DmURUvvA.js";
|