@aion0/forge 0.9.1 → 0.9.2
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/RELEASE_NOTES.md +60 -5
- package/app/api/agents/[id]/test/route.ts +150 -0
- package/app/api/connectors/[id]/sync-cli/route.ts +73 -0
- package/app/api/connectors/tool-test/route.ts +70 -0
- package/app/api/jobs/[id]/cancel/route.ts +50 -0
- package/app/api/jobs/[id]/dispatched-pipelines/route.ts +24 -0
- package/app/api/jobs/[id]/run/route.ts +22 -2
- package/app/api/jobs/route.ts +11 -1
- package/app/api/pipelines/[id]/schema/route.ts +53 -0
- package/app/api/pipelines/bulk-delete/route.ts +39 -0
- package/app/api/pipelines/gc/route.ts +27 -0
- package/app/api/schedules/[id]/cancel/route.ts +27 -0
- package/app/api/schedules/[id]/route.ts +173 -0
- package/app/api/schedules/[id]/run/route.ts +45 -0
- package/app/api/schedules/[id]/runs/route.ts +22 -0
- package/app/api/schedules/[id]/stop/route.ts +33 -0
- package/app/api/schedules/route.ts +175 -0
- package/app/api/tasks/bulk-delete/route.ts +47 -0
- package/bin/forge-server.mjs +22 -1
- package/cli/mw.mjs +186 -7657
- package/cli/mw.ts +26 -0
- package/components/ConnectorsPanel.tsx +46 -0
- package/components/Dashboard.tsx +23 -10
- package/components/JobsView.tsx +245 -6
- package/components/PipelineEditor.tsx +38 -1
- package/components/PipelineView.tsx +325 -4
- package/components/ScheduleCreateModal.tsx +1507 -0
- package/components/SchedulesView.tsx +605 -0
- package/components/SettingsModal.tsx +106 -0
- package/docs/Team-Workflow-Integration.md +487 -0
- package/docs/UI-Design-Brief-SidePanel.md +278 -0
- package/lib/__tests__/foreach-batch-yaml.test.ts +33 -0
- package/lib/__tests__/foreach-before.test.ts +201 -0
- package/lib/__tests__/foreach-parse.test.ts +114 -0
- package/lib/__tests__/foreach-snapshot.test.ts +112 -0
- package/lib/__tests__/foreach-source.test.ts +105 -0
- package/lib/__tests__/foreach-template.test.ts +112 -0
- package/lib/chat/agent-loop.ts +3 -3
- package/lib/chat-standalone.ts +26 -1
- package/lib/claude-process.ts +8 -5
- package/lib/connectors/sync.ts +8 -2
- package/lib/crypto.ts +1 -1
- package/lib/dirs.ts +22 -7
- package/lib/help-docs/05-pipelines.md +171 -0
- package/lib/help-docs/13-schedules.md +165 -0
- package/lib/help-docs/23-automation-states.md +148 -0
- package/lib/help-docs/CLAUDE.md +6 -6
- package/lib/init.ts +25 -6
- package/lib/jobs/recipes.ts +3 -2
- package/lib/jobs/scheduler.ts +215 -11
- package/lib/jobs/store.ts +79 -3
- package/lib/jobs/types.ts +31 -0
- package/lib/logger.ts +1 -1
- package/lib/notify.ts +13 -6
- package/lib/pipeline-gc.ts +105 -0
- package/lib/pipeline-scheduler.ts +29 -0
- package/lib/pipeline.ts +811 -330
- package/lib/schedules/action-runner.ts +257 -0
- package/lib/schedules/scheduler.ts +422 -0
- package/lib/schedules/state.ts +41 -0
- package/lib/schedules/store.ts +618 -0
- package/lib/schedules/types.ts +117 -0
- package/lib/settings.ts +35 -0
- package/lib/task-manager.ts +56 -13
- package/lib/workflow-marketplace.ts +7 -1
- package/lib/workspace/skill-installer.ts +7 -6
- package/package.json +3 -1
- package/lib/help-docs/19-jobs.md +0 -145
- package/lib/help-docs/20-mantis-bug-fix.md +0 -115
- package/lib/help-docs/22-recipes.md +0 -124
|
@@ -196,6 +196,35 @@ export function syncRunStatus(pipelineId: string): void {
|
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
updateRun(pipelineId, pipeline.status, summary.trim());
|
|
199
|
+
|
|
200
|
+
// Also propagate to schedule_runs (new Schedules subsystem).
|
|
201
|
+
// Only touches rows with status='started' so we don't disturb
|
|
202
|
+
// already-terminal runs. Lazy import to avoid loading Schedules code
|
|
203
|
+
// path when only Jobs are in use, and to dodge any module-cycle risk.
|
|
204
|
+
if (pipeline.status === 'done' || pipeline.status === 'failed' || pipeline.status === 'cancelled') {
|
|
205
|
+
import('./schedules/store').then(async ({ updateScheduleRunStatus, setScheduleRunBodyOutputByTarget }) => {
|
|
206
|
+
try {
|
|
207
|
+
// Persist body_output BEFORE flipping status — action-runner reads
|
|
208
|
+
// body_output once it sees status='done'.
|
|
209
|
+
setScheduleRunBodyOutputByTarget(pipelineId, summary || null);
|
|
210
|
+
updateScheduleRunStatus({
|
|
211
|
+
target_id: pipelineId,
|
|
212
|
+
status: pipeline.status as 'done' | 'failed' | 'cancelled',
|
|
213
|
+
error: pipeline.status === 'failed' ? summary.slice(0, 500) || null : null,
|
|
214
|
+
});
|
|
215
|
+
} catch (e) {
|
|
216
|
+
console.warn(`[pipeline-scheduler] schedule_run sync for ${pipelineId} failed: ${(e as Error).message}`);
|
|
217
|
+
}
|
|
218
|
+
// Fire action (if any) once body has settled. Wrapped so a
|
|
219
|
+
// failing action doesn't taint pipeline-scheduler logging.
|
|
220
|
+
try {
|
|
221
|
+
const { runActionForTarget } = await import('./schedules/action-runner');
|
|
222
|
+
await runActionForTarget(pipelineId);
|
|
223
|
+
} catch (e) {
|
|
224
|
+
console.warn(`[pipeline-scheduler] schedule action for ${pipelineId} failed: ${(e as Error).message}`);
|
|
225
|
+
}
|
|
226
|
+
}).catch(() => {});
|
|
227
|
+
}
|
|
199
228
|
}
|
|
200
229
|
|
|
201
230
|
// ─── GitHub Issue Scanning ──────────────────────────────
|