aimeat 1.23.2 → 1.24.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/dist/locales/en.json +580 -21
- package/dist/locales/fi.json +592 -33
- package/dist/public/components/ContactCard.js +28 -0
- package/dist/public/css/views/admin.css +12 -0
- package/dist/public/css/views/agents-detail.css +62 -10
- package/dist/public/css/views/landing.css +87 -0
- package/dist/public/css/views/offers.css +96 -0
- package/dist/public/css/views/portfolio.css +18 -0
- package/dist/public/css/views/profile.css +153 -8
- package/dist/public/css/views/start.css +96 -0
- package/dist/public/css/views/workflows.css +111 -0
- package/dist/public/img/business-hero.png +0 -0
- package/dist/public/img/toimitus.png +0 -0
- package/dist/public/js/components/tag-cloud.js +46 -31
- package/dist/public/js/components/tag-editor.js +2 -2
- package/dist/public/js/recents.js +40 -0
- package/dist/public/js/services/admin.js +6 -0
- package/dist/public/js/services/agents.js +34 -0
- package/dist/public/js/services/offers.js +152 -0
- package/dist/public/js/services/packages.js +1 -0
- package/dist/public/js/services/workflows.js +57 -0
- package/dist/public/llms-template.txt +7 -0
- package/dist/public/spa.html +35 -3
- package/dist/public/views/admin/subdomains-tab.js +182 -0
- package/dist/public/views/admin.js +2 -0
- package/dist/public/views/business.js +119 -0
- package/dist/public/views/how-it-works.js +159 -0
- package/dist/public/views/landing.js +235 -0
- package/dist/public/views/portfolio.js +120 -23
- package/dist/public/views/pricing.js +75 -0
- package/dist/public/views/profile/access-tab.js +124 -51
- package/dist/public/views/profile/agents/agent-card.js +68 -37
- package/dist/public/views/profile/agents/shared-board.js +56 -22
- package/dist/public/views/profile/agents/tab-activity.js +24 -12
- package/dist/public/views/profile/agents/tab-agent-config.js +31 -1
- package/dist/public/views/profile/agents/tab-data-access.js +9 -13
- package/dist/public/views/profile/agents/tab-integration.js +27 -1
- package/dist/public/views/profile/agents/tab-messages.js +6 -11
- package/dist/public/views/profile/agents/tab-quality.js +45 -5
- package/dist/public/views/profile/agents-tab.js +41 -6
- package/dist/public/views/profile/apps-tab.js +7 -1
- package/dist/public/views/profile/knowledge-tab.js +4 -1
- package/dist/public/views/profile/landing-page.js +428 -123
- package/dist/public/views/profile/memory-tab.js +409 -211
- package/dist/public/views/profile/nodes-tab.js +18 -3
- package/dist/public/views/profile/offers-tab.js +310 -0
- package/dist/public/views/profile/organisms-tab.js +289 -28
- package/dist/public/views/profile/packages-tab.js +152 -16
- package/dist/public/views/profile/portfolio-tab.js +98 -31
- package/dist/public/views/profile/workflows-form.js +220 -0
- package/dist/public/views/profile/workflows-tab.js +244 -0
- package/dist/public/views/profile.js +4 -0
- package/dist/public/views/start-flows.js +281 -0
- package/dist/public/views/start.js +258 -0
- package/dist/src/cli/connect/mcp/tools/index.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/index.js +2 -0
- package/dist/src/cli/connect/mcp/tools/index.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/workflows.d.ts +12 -0
- package/dist/src/cli/connect/mcp/tools/workflows.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/workflows.js +37 -0
- package/dist/src/cli/connect/mcp/tools/workflows.js.map +1 -0
- package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call.js +37 -0
- package/dist/src/cli/connect/tool-call.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +1474 -66
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/generated/prisma-postgres/edge.js +15 -3
- package/dist/src/generated/prisma-postgres/index-browser.js +12 -0
- package/dist/src/generated/prisma-postgres/index.d.ts +1476 -160
- package/dist/src/generated/prisma-postgres/index.js +15 -3
- package/dist/src/generated/prisma-postgres/package.json +1 -1
- package/dist/src/generated/prisma-postgres/schema.prisma +11 -0
- package/dist/src/generated/prisma-postgres/wasm.js +15 -3
- package/dist/src/mcp/annotations.d.ts.map +1 -1
- package/dist/src/mcp/annotations.js +3 -0
- package/dist/src/mcp/annotations.js.map +1 -1
- package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions.js +27 -0
- package/dist/src/mcp/catalog/definitions.js.map +1 -1
- package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
- package/dist/src/mcp/catalog/scopes.js +5 -1
- package/dist/src/mcp/catalog/scopes.js.map +1 -1
- package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
- package/dist/src/mcp/catalog/surfaces.js +1 -0
- package/dist/src/mcp/catalog/surfaces.js.map +1 -1
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +2 -0
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/mcp/workflows.d.ts +18 -0
- package/dist/src/mcp/workflows.d.ts.map +1 -0
- package/dist/src/mcp/workflows.js +68 -0
- package/dist/src/mcp/workflows.js.map +1 -0
- package/dist/src/middleware/subdomain.d.ts +28 -0
- package/dist/src/middleware/subdomain.d.ts.map +1 -0
- package/dist/src/middleware/subdomain.js +32 -0
- package/dist/src/middleware/subdomain.js.map +1 -0
- package/dist/src/models/offer-schemas.d.ts +236 -0
- package/dist/src/models/offer-schemas.d.ts.map +1 -0
- package/dist/src/models/offer-schemas.js +112 -0
- package/dist/src/models/offer-schemas.js.map +1 -0
- package/dist/src/models/workflow-schemas.d.ts +220 -0
- package/dist/src/models/workflow-schemas.d.ts.map +1 -0
- package/dist/src/models/workflow-schemas.js +102 -0
- package/dist/src/models/workflow-schemas.js.map +1 -0
- package/dist/src/routes/agent-tasks.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks.js +49 -0
- package/dist/src/routes/agent-tasks.js.map +1 -1
- package/dist/src/routes/agents.d.ts.map +1 -1
- package/dist/src/routes/agents.js +146 -1
- package/dist/src/routes/agents.js.map +1 -1
- package/dist/src/routes/apps-backup.d.ts +20 -0
- package/dist/src/routes/apps-backup.d.ts.map +1 -0
- package/dist/src/routes/apps-backup.js +165 -0
- package/dist/src/routes/apps-backup.js.map +1 -0
- package/dist/src/routes/ghii.d.ts.map +1 -1
- package/dist/src/routes/ghii.js +4 -0
- package/dist/src/routes/ghii.js.map +1 -1
- package/dist/src/routes/instances.d.ts +2 -1
- package/dist/src/routes/instances.d.ts.map +1 -1
- package/dist/src/routes/instances.js +59 -1
- package/dist/src/routes/instances.js.map +1 -1
- package/dist/src/routes/memory.d.ts.map +1 -1
- package/dist/src/routes/memory.js +5 -0
- package/dist/src/routes/memory.js.map +1 -1
- package/dist/src/routes/packages.d.ts.map +1 -1
- package/dist/src/routes/packages.js +32 -0
- package/dist/src/routes/packages.js.map +1 -1
- package/dist/src/routes/permissions.d.ts +12 -0
- package/dist/src/routes/permissions.d.ts.map +1 -1
- package/dist/src/routes/permissions.js +35 -3
- package/dist/src/routes/permissions.js.map +1 -1
- package/dist/src/routes/portal.d.ts +3 -0
- package/dist/src/routes/portal.d.ts.map +1 -1
- package/dist/src/routes/portal.js +12 -0
- package/dist/src/routes/portal.js.map +1 -1
- package/dist/src/routes/public-stats.d.ts +15 -0
- package/dist/src/routes/public-stats.d.ts.map +1 -0
- package/dist/src/routes/public-stats.js +90 -0
- package/dist/src/routes/public-stats.js.map +1 -0
- package/dist/src/routes/sse.d.ts +7 -2
- package/dist/src/routes/sse.d.ts.map +1 -1
- package/dist/src/routes/sse.js +35 -5
- package/dist/src/routes/sse.js.map +1 -1
- package/dist/src/routes/stats.d.ts.map +1 -1
- package/dist/src/routes/stats.js +13 -0
- package/dist/src/routes/stats.js.map +1 -1
- package/dist/src/routes/subdomains.d.ts +33 -0
- package/dist/src/routes/subdomains.d.ts.map +1 -0
- package/dist/src/routes/subdomains.js +208 -0
- package/dist/src/routes/subdomains.js.map +1 -0
- package/dist/src/routes/workflows.d.ts +30 -0
- package/dist/src/routes/workflows.d.ts.map +1 -0
- package/dist/src/routes/workflows.js +178 -0
- package/dist/src/routes/workflows.js.map +1 -0
- package/dist/src/server-bootstrap/routes-loader.d.ts +2 -0
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +19 -2
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/server-bootstrap/service-init.d.ts +2 -0
- package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/service-init.js +6 -0
- package/dist/src/server-bootstrap/service-init.js.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +5 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/apps-backup-export.d.ts +22 -0
- package/dist/src/services/apps-backup-export.d.ts.map +1 -0
- package/dist/src/services/apps-backup-export.js +136 -0
- package/dist/src/services/apps-backup-export.js.map +1 -0
- package/dist/src/services/apps-backup-import.d.ts +120 -0
- package/dist/src/services/apps-backup-import.d.ts.map +1 -0
- package/dist/src/services/apps-backup-import.js +259 -0
- package/dist/src/services/apps-backup-import.js.map +1 -0
- package/dist/src/services/component-registrar.d.ts +17 -0
- package/dist/src/services/component-registrar.d.ts.map +1 -1
- package/dist/src/services/component-registrar.js +63 -5
- package/dist/src/services/component-registrar.js.map +1 -1
- package/dist/src/services/handbooks/agent.d.ts +1 -1
- package/dist/src/services/handbooks/agent.d.ts.map +1 -1
- package/dist/src/services/handbooks/agent.js +10 -0
- package/dist/src/services/handbooks/agent.js.map +1 -1
- package/dist/src/services/handbooks/appdev.d.ts +1 -1
- package/dist/src/services/handbooks/appdev.d.ts.map +1 -1
- package/dist/src/services/handbooks/appdev.js +5 -2
- package/dist/src/services/handbooks/appdev.js.map +1 -1
- package/dist/src/services/scheduler.d.ts +6 -0
- package/dist/src/services/scheduler.d.ts.map +1 -1
- package/dist/src/services/scheduler.js +22 -0
- package/dist/src/services/scheduler.js.map +1 -1
- package/dist/src/services/schema-validator.d.ts +9 -0
- package/dist/src/services/schema-validator.d.ts.map +1 -1
- package/dist/src/services/schema-validator.js +16 -0
- package/dist/src/services/schema-validator.js.map +1 -1
- package/dist/src/services/workflow/engine.d.ts +84 -0
- package/dist/src/services/workflow/engine.d.ts.map +1 -0
- package/dist/src/services/workflow/engine.js +545 -0
- package/dist/src/services/workflow/engine.js.map +1 -0
- package/dist/src/services/workflow/eval-context.d.ts +23 -0
- package/dist/src/services/workflow/eval-context.d.ts.map +1 -0
- package/dist/src/services/workflow/eval-context.js +52 -0
- package/dist/src/services/workflow/eval-context.js.map +1 -0
- package/dist/src/services/workflow/lifecycle.d.ts +38 -0
- package/dist/src/services/workflow/lifecycle.d.ts.map +1 -0
- package/dist/src/services/workflow/lifecycle.js +99 -0
- package/dist/src/services/workflow/lifecycle.js.map +1 -0
- package/dist/src/services/workflow/signal-eval.d.ts +70 -0
- package/dist/src/services/workflow/signal-eval.d.ts.map +1 -0
- package/dist/src/services/workflow/signal-eval.js +174 -0
- package/dist/src/services/workflow/signal-eval.js.map +1 -0
- package/dist/src/services/workflow/store.d.ts +89 -0
- package/dist/src/services/workflow/store.d.ts.map +1 -0
- package/dist/src/services/workflow/store.js +284 -0
- package/dist/src/services/workflow/store.js.map +1 -0
- package/dist/src/storage/interface.d.ts +13 -3
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/interface.js.map +1 -1
- package/dist/src/storage/providers/mongodb/index.d.ts +10 -1
- package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.js +76 -0
- package/dist/src/storage/providers/mongodb/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/index.d.ts +8 -1
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +61 -0
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +11 -0
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/index.d.ts +1 -0
- package/dist/src/storage/repositories/index.d.ts.map +1 -1
- package/dist/src/storage/repositories/package.repository.d.ts +2 -0
- package/dist/src/storage/repositories/package.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/subdomain-site.repository.d.ts +19 -0
- package/dist/src/storage/repositories/subdomain-site.repository.d.ts.map +1 -0
- package/dist/src/storage/repositories/subdomain-site.repository.js +2 -0
- package/dist/src/storage/repositories/subdomain-site.repository.js.map +1 -0
- package/dist/static/app-catalog.html +1139 -28
- package/package.json +1 -1
- package/prisma/schema.postgres.prisma +11 -0
- package/prisma/schema.prisma +11 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file store.ts
|
|
3
|
+
* @description Workflow persistence + save-time validation + offer resolution + blueprint, all over
|
|
4
|
+
* the owner's existing memory (NO new SQLite/Mongo tables — Agent Workflows reuses the flexible
|
|
5
|
+
* memory system). Definitions live in the owner GHII namespace so the owner AND all their agents
|
|
6
|
+
* see them: `workflows.def.<id>`; runs (written by the engine, Phase 4) live at
|
|
7
|
+
* `workflows.run.<id>.<runId>`. A workflow is only saveable when its graph is a DAG and every
|
|
8
|
+
* step's agent/offer publishes its signals (an agent is "workflow-compatible" exactly then). The
|
|
9
|
+
* blueprint is DERIVED from those offers along step order, not hand-authored. See
|
|
10
|
+
* docs/plans/2026-06-13-agent-workflows-node-plan.md §3,§5,§8.
|
|
11
|
+
* @structure
|
|
12
|
+
* - key helpers: defKey / runKeyPrefix / runKey
|
|
13
|
+
* - CRUD: getWorkflow / listWorkflows / saveWorkflow / deleteWorkflow / listRuns / getRun
|
|
14
|
+
* - validation (pure, exported for tests): collectSignalKeys / collectVarRefs / detectCycle /
|
|
15
|
+
* missingAfterRefs
|
|
16
|
+
* - offer resolution: resolveStep (storage) → effective signals + deliverable location
|
|
17
|
+
* - buildBlueprint — derived structural graph (nodes + edges + keys touched)
|
|
18
|
+
* @usage import { saveWorkflow, getWorkflow, buildBlueprint } from '../workflow/store.js';
|
|
19
|
+
* @version-history
|
|
20
|
+
* v1.0.0 — 2026-06-13 — Phase 3: memory-backed CRUD + DAG/offer validation + blueprint.
|
|
21
|
+
*/
|
|
22
|
+
import type { AimeatConfig } from '../../config.js';
|
|
23
|
+
import type { Storage } from '../../storage/interface.js';
|
|
24
|
+
import { type WorkflowDef, type WorkflowDefInput, type WorkflowStep, type WorkflowRun, type Signal } from '../../models/workflow-schemas.js';
|
|
25
|
+
export declare const defKey: (id: string) => string;
|
|
26
|
+
export declare const runKeyPrefix: (id: string) => string;
|
|
27
|
+
export declare const runKey: (id: string, runId: string) => string;
|
|
28
|
+
export declare const DEF_LIST_PREFIX = "workflows.def.";
|
|
29
|
+
/** Collect the raw key / key_glob templates referenced anywhere in a signal tree. */
|
|
30
|
+
export declare function collectSignalKeys(signal: Signal | 'none' | undefined): string[];
|
|
31
|
+
/** Extract the {var} names referenced across a list of key templates. */
|
|
32
|
+
export declare function collectVarRefs(keyTemplates: string[]): Set<string>;
|
|
33
|
+
/** `after` ids that don't name an existing step. */
|
|
34
|
+
export declare function missingAfterRefs(steps: Pick<WorkflowStep, 'id' | 'after'>[]): string[];
|
|
35
|
+
/** Detect a cycle in the `after` dependency graph. Returns the offending path, or null if a DAG. */
|
|
36
|
+
export declare function detectCycle(steps: Pick<WorkflowStep, 'id' | 'after'>[]): string[] | null;
|
|
37
|
+
export interface ResolvedStep {
|
|
38
|
+
stepId: string;
|
|
39
|
+
agents: string[];
|
|
40
|
+
offerId: string;
|
|
41
|
+
/** Effective signals: the step's own, else inherited from the offer. */
|
|
42
|
+
success_signal?: Signal;
|
|
43
|
+
required_to_function?: Signal | 'none';
|
|
44
|
+
deliverableKey?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ValidationResult {
|
|
47
|
+
ok: boolean;
|
|
48
|
+
errors: string[];
|
|
49
|
+
resolved?: ResolvedStep[];
|
|
50
|
+
}
|
|
51
|
+
export declare function validateWorkflow(storage: Storage, config: AimeatConfig, ownerName: string, input: WorkflowDefInput): Promise<ValidationResult>;
|
|
52
|
+
export declare function getWorkflow(storage: Storage, ownerGhii: string, id: string): Promise<WorkflowDef | null>;
|
|
53
|
+
export declare function listWorkflows(storage: Storage, ownerGhii: string): Promise<WorkflowDef[]>;
|
|
54
|
+
export interface SaveResult {
|
|
55
|
+
ok: boolean;
|
|
56
|
+
def?: WorkflowDef;
|
|
57
|
+
errors?: string[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Validate + persist a workflow definition under the owner GHII namespace. `createdBy` records the
|
|
61
|
+
* author (owner GHII or agent GAII) for audit; createdAt is preserved across updates.
|
|
62
|
+
*/
|
|
63
|
+
export declare function saveWorkflow(storage: Storage, config: AimeatConfig, ownerGhii: string, ownerName: string, id: string, body: unknown, createdBy: string): Promise<SaveResult>;
|
|
64
|
+
export declare function deleteWorkflow(storage: Storage, ownerGhii: string, id: string, opts?: {
|
|
65
|
+
withRuns?: boolean;
|
|
66
|
+
}): Promise<boolean>;
|
|
67
|
+
export declare function listRuns(storage: Storage, ownerGhii: string, id: string): Promise<WorkflowRun[]>;
|
|
68
|
+
export declare function getRun(storage: Storage, ownerGhii: string, id: string, runId: string): Promise<WorkflowRun | null>;
|
|
69
|
+
export interface BlueprintNode {
|
|
70
|
+
stepId: string;
|
|
71
|
+
agents: string[];
|
|
72
|
+
offerId: string;
|
|
73
|
+
reads: string[];
|
|
74
|
+
writes: string[];
|
|
75
|
+
}
|
|
76
|
+
export interface Blueprint {
|
|
77
|
+
workflowId: string;
|
|
78
|
+
nodes: BlueprintNode[];
|
|
79
|
+
edges: Array<{
|
|
80
|
+
from: string;
|
|
81
|
+
to: string;
|
|
82
|
+
}>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Compose the steps into one structural blueprint, derived from the resolved offers along the step
|
|
86
|
+
* order. Shows the input→output flow and the exact memory keys each step touches (as templates).
|
|
87
|
+
*/
|
|
88
|
+
export declare function buildBlueprint(def: WorkflowDef, resolved: ResolvedStep[]): Blueprint;
|
|
89
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/services/workflow/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { buildGAII } from '../../utils/gaii.js';
|
|
2
|
+
import { WorkflowDefInputSchema, WORKFLOW_ID_RE, } from '../../models/workflow-schemas.js';
|
|
3
|
+
// ── memory keys ────────────────────────────────────────────────────────────────
|
|
4
|
+
export const defKey = (id) => `workflows.def.${id}`;
|
|
5
|
+
export const runKeyPrefix = (id) => `workflows.run.${id}.`;
|
|
6
|
+
export const runKey = (id, runId) => `workflows.run.${id}.${runId}`;
|
|
7
|
+
export const DEF_LIST_PREFIX = 'workflows.def.';
|
|
8
|
+
// ── pure validation helpers (exported for unit tests) ──────────────────────────
|
|
9
|
+
/** Collect the raw key / key_glob templates referenced anywhere in a signal tree. */
|
|
10
|
+
export function collectSignalKeys(signal) {
|
|
11
|
+
if (!signal || signal === 'none')
|
|
12
|
+
return [];
|
|
13
|
+
const out = [];
|
|
14
|
+
const walk = (s) => {
|
|
15
|
+
if ('all' in s) {
|
|
16
|
+
s.all.forEach(walk);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if ('any' in s) {
|
|
20
|
+
s.any.forEach(walk);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if ('when' in s) {
|
|
24
|
+
walk(s.when);
|
|
25
|
+
walk(s.then);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if ('kind' in s) {
|
|
29
|
+
if (s.key)
|
|
30
|
+
out.push(s.key);
|
|
31
|
+
if (s.key_glob)
|
|
32
|
+
out.push(s.key_glob);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
walk(signal);
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
/** Extract the {var} names referenced across a list of key templates. */
|
|
39
|
+
export function collectVarRefs(keyTemplates) {
|
|
40
|
+
const refs = new Set();
|
|
41
|
+
for (const tmpl of keyTemplates) {
|
|
42
|
+
for (const m of tmpl.matchAll(/\{([a-zA-Z0-9_]+)\}/g))
|
|
43
|
+
refs.add(m[1]);
|
|
44
|
+
}
|
|
45
|
+
return refs;
|
|
46
|
+
}
|
|
47
|
+
/** `after` ids that don't name an existing step. */
|
|
48
|
+
export function missingAfterRefs(steps) {
|
|
49
|
+
const ids = new Set(steps.map(s => s.id));
|
|
50
|
+
const missing = new Set();
|
|
51
|
+
for (const s of steps)
|
|
52
|
+
for (const dep of s.after ?? [])
|
|
53
|
+
if (!ids.has(dep))
|
|
54
|
+
missing.add(dep);
|
|
55
|
+
return [...missing];
|
|
56
|
+
}
|
|
57
|
+
/** Detect a cycle in the `after` dependency graph. Returns the offending path, or null if a DAG. */
|
|
58
|
+
export function detectCycle(steps) {
|
|
59
|
+
const deps = new Map(steps.map(s => [s.id, s.after ?? []]));
|
|
60
|
+
const state = new Map();
|
|
61
|
+
const stack = [];
|
|
62
|
+
let cycle = null;
|
|
63
|
+
const dfs = (id) => {
|
|
64
|
+
if (cycle)
|
|
65
|
+
return;
|
|
66
|
+
state.set(id, 'visiting');
|
|
67
|
+
stack.push(id);
|
|
68
|
+
for (const dep of deps.get(id) ?? []) {
|
|
69
|
+
if (!deps.has(dep))
|
|
70
|
+
continue; // missing refs reported separately
|
|
71
|
+
const st = state.get(dep);
|
|
72
|
+
if (st === 'visiting') {
|
|
73
|
+
cycle = [...stack.slice(stack.indexOf(dep)), dep];
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (st !== 'done')
|
|
77
|
+
dfs(dep);
|
|
78
|
+
if (cycle)
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
stack.pop();
|
|
82
|
+
state.set(id, 'done');
|
|
83
|
+
};
|
|
84
|
+
for (const s of steps)
|
|
85
|
+
if (state.get(s.id) !== 'done') {
|
|
86
|
+
dfs(s.id);
|
|
87
|
+
if (cycle)
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
return cycle;
|
|
91
|
+
}
|
|
92
|
+
/** Read one agent's published offers (stored under the agent's GAII as `agents.<name>.offers`). */
|
|
93
|
+
async function readAgentOffers(storage, config, ownerName, agentName) {
|
|
94
|
+
const gaii = buildGAII(agentName, ownerName, config.nodeId);
|
|
95
|
+
const rec = await storage.getMemory(gaii, `agents.${agentName}.offers`);
|
|
96
|
+
const offers = rec?.value?.offers;
|
|
97
|
+
return Array.isArray(offers) ? offers : [];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Resolve a step's effective signals from its agent(s)' offer. Returns the resolved view, or an
|
|
101
|
+
* error string when an agent/offer is missing or not workflow-compatible (no published signals).
|
|
102
|
+
*/
|
|
103
|
+
async function resolveStep(storage, config, ownerName, step) {
|
|
104
|
+
const agents = Array.isArray(step.agent) ? step.agent : [step.agent];
|
|
105
|
+
let chosen;
|
|
106
|
+
for (const agentName of agents) {
|
|
107
|
+
const offers = await readAgentOffers(storage, config, ownerName, agentName);
|
|
108
|
+
const offer = offers.find(o => o.id === step.offer);
|
|
109
|
+
if (!offer)
|
|
110
|
+
return { error: `step "${step.id}": agent "${agentName}" does not publish offer "${step.offer}"` };
|
|
111
|
+
const hasSignals = !!offer.success_signal && !!offer.required_to_function;
|
|
112
|
+
const hasLocation = !!offer.deliverable?.location?.key || !!offer.deliverable?.location?.url;
|
|
113
|
+
if (!hasSignals || !hasLocation) {
|
|
114
|
+
return { error: `step "${step.id}": offer "${step.offer}" (agent "${agentName}") is not workflow-compatible — it must publish success_signal + required_to_function + deliverable.location` };
|
|
115
|
+
}
|
|
116
|
+
if (!chosen)
|
|
117
|
+
chosen = offer; // signals are the offer's contract; use the first agent's copy
|
|
118
|
+
}
|
|
119
|
+
const offer = chosen;
|
|
120
|
+
return {
|
|
121
|
+
resolved: {
|
|
122
|
+
stepId: step.id,
|
|
123
|
+
agents,
|
|
124
|
+
offerId: step.offer,
|
|
125
|
+
success_signal: step.success_signal ?? offer.success_signal,
|
|
126
|
+
required_to_function: step.required_to_function ?? offer.required_to_function,
|
|
127
|
+
deliverableKey: offer.deliverable?.location?.key,
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export async function validateWorkflow(storage, config, ownerName, input) {
|
|
132
|
+
const errors = [];
|
|
133
|
+
// 1. unique step ids
|
|
134
|
+
const seen = new Set();
|
|
135
|
+
for (const s of input.steps) {
|
|
136
|
+
if (seen.has(s.id))
|
|
137
|
+
errors.push(`duplicate step id "${s.id}"`);
|
|
138
|
+
seen.add(s.id);
|
|
139
|
+
}
|
|
140
|
+
// 2. dangling `after` refs + 3. cycle
|
|
141
|
+
for (const dep of missingAfterRefs(input.steps))
|
|
142
|
+
errors.push(`"after" references unknown step "${dep}"`);
|
|
143
|
+
const cycle = detectCycle(input.steps);
|
|
144
|
+
if (cycle)
|
|
145
|
+
errors.push(`dependency cycle: ${cycle.join(' → ')}`);
|
|
146
|
+
// 4. offer resolution (workflow-compatibility) + 5. declared-var coverage
|
|
147
|
+
const declaredVars = new Set(input.vars.map(v => v.name));
|
|
148
|
+
const resolved = [];
|
|
149
|
+
for (const step of input.steps) {
|
|
150
|
+
const r = await resolveStep(storage, config, ownerName, step);
|
|
151
|
+
if ('error' in r) {
|
|
152
|
+
errors.push(r.error);
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
resolved.push(r.resolved);
|
|
156
|
+
const keys = [...collectSignalKeys(r.resolved.success_signal), ...collectSignalKeys(r.resolved.required_to_function)];
|
|
157
|
+
for (const v of collectVarRefs(keys)) {
|
|
158
|
+
if (!declaredVars.has(v))
|
|
159
|
+
errors.push(`step "${step.id}": signal references undeclared var "{${v}}"`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { ok: errors.length === 0, errors, resolved: errors.length === 0 ? resolved : undefined };
|
|
163
|
+
}
|
|
164
|
+
// ── CRUD ────────────────────────────────────────────────────────────────────────
|
|
165
|
+
export async function getWorkflow(storage, ownerGhii, id) {
|
|
166
|
+
const rec = await storage.getMemory(ownerGhii, defKey(id));
|
|
167
|
+
return rec ? rec.value : null;
|
|
168
|
+
}
|
|
169
|
+
export async function listWorkflows(storage, ownerGhii) {
|
|
170
|
+
const recs = await storage.listMemory(ownerGhii, { prefix: DEF_LIST_PREFIX });
|
|
171
|
+
return recs.map(r => r.value);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Validate + persist a workflow definition under the owner GHII namespace. `createdBy` records the
|
|
175
|
+
* author (owner GHII or agent GAII) for audit; createdAt is preserved across updates.
|
|
176
|
+
*/
|
|
177
|
+
export async function saveWorkflow(storage, config, ownerGhii, ownerName, id, body, createdBy) {
|
|
178
|
+
if (!WORKFLOW_ID_RE.test(id))
|
|
179
|
+
return { ok: false, errors: [`invalid workflow id "${id}" — use a lowercase slug`] };
|
|
180
|
+
const parsed = WorkflowDefInputSchema.safeParse(body);
|
|
181
|
+
if (!parsed.success) {
|
|
182
|
+
return { ok: false, errors: parsed.error.issues.map(i => `${i.path.join('.')}: ${i.message}`) };
|
|
183
|
+
}
|
|
184
|
+
const input = parsed.data;
|
|
185
|
+
// llm leaves require explicit owner approval (consent gate).
|
|
186
|
+
const usesLlm = input.steps.some(s => collectSignalKeysHasLlm(s.success_signal) || collectSignalKeysHasLlm(s.required_to_function));
|
|
187
|
+
if (usesLlm && !input.llm?.approved) {
|
|
188
|
+
return { ok: false, errors: ['a step uses an `llm` signal leaf — set llm.approved=true to consent to node-LLM use'] };
|
|
189
|
+
}
|
|
190
|
+
const v = await validateWorkflow(storage, config, ownerName, input);
|
|
191
|
+
if (!v.ok)
|
|
192
|
+
return { ok: false, errors: v.errors };
|
|
193
|
+
const now = new Date().toISOString();
|
|
194
|
+
const existing = await storage.getMemory(ownerGhii, defKey(id));
|
|
195
|
+
const prior = existing?.value;
|
|
196
|
+
const def = {
|
|
197
|
+
id,
|
|
198
|
+
title: input.title,
|
|
199
|
+
description: input.description,
|
|
200
|
+
trigger: input.trigger,
|
|
201
|
+
vars: input.vars,
|
|
202
|
+
steps: input.steps,
|
|
203
|
+
on_step_fail: input.on_step_fail,
|
|
204
|
+
llm: input.llm,
|
|
205
|
+
costCapMorsels: input.costCapMorsels ?? null,
|
|
206
|
+
createdBy: prior?.createdBy ?? createdBy,
|
|
207
|
+
createdAt: prior?.createdAt ?? now,
|
|
208
|
+
updatedAt: now,
|
|
209
|
+
};
|
|
210
|
+
await storage.setMemory({
|
|
211
|
+
key: defKey(id),
|
|
212
|
+
ownerGaii: ownerGhii,
|
|
213
|
+
value: def,
|
|
214
|
+
visibility: 'private',
|
|
215
|
+
tags: ['workflow'],
|
|
216
|
+
ttlHours: null,
|
|
217
|
+
version: existing ? existing.version + 1 : 1,
|
|
218
|
+
createdAt: existing?.createdAt ?? now,
|
|
219
|
+
updatedAt: now,
|
|
220
|
+
});
|
|
221
|
+
return { ok: true, def };
|
|
222
|
+
}
|
|
223
|
+
/** True if any leaf in the signal tree is an `llm` leaf. */
|
|
224
|
+
function collectSignalKeysHasLlm(signal) {
|
|
225
|
+
if (!signal || signal === 'none')
|
|
226
|
+
return false;
|
|
227
|
+
const walk = (s) => {
|
|
228
|
+
if ('all' in s)
|
|
229
|
+
return s.all.some(walk);
|
|
230
|
+
if ('any' in s)
|
|
231
|
+
return s.any.some(walk);
|
|
232
|
+
if ('when' in s)
|
|
233
|
+
return walk(s.when) || walk(s.then);
|
|
234
|
+
return 'kind' in s && s.kind === 'llm';
|
|
235
|
+
};
|
|
236
|
+
return walk(signal);
|
|
237
|
+
}
|
|
238
|
+
export async function deleteWorkflow(storage, ownerGhii, id, opts) {
|
|
239
|
+
const existing = await storage.getMemory(ownerGhii, defKey(id));
|
|
240
|
+
if (!existing)
|
|
241
|
+
return false;
|
|
242
|
+
await storage.deleteMemory(ownerGhii, defKey(id));
|
|
243
|
+
if (opts?.withRuns) {
|
|
244
|
+
const runs = await storage.listMemory(ownerGhii, { prefix: runKeyPrefix(id) });
|
|
245
|
+
for (const r of runs)
|
|
246
|
+
await storage.deleteMemory(ownerGhii, r.key);
|
|
247
|
+
}
|
|
248
|
+
return true;
|
|
249
|
+
}
|
|
250
|
+
export async function listRuns(storage, ownerGhii, id) {
|
|
251
|
+
const recs = await storage.listMemory(ownerGhii, { prefix: runKeyPrefix(id) });
|
|
252
|
+
return recs.map(r => r.value)
|
|
253
|
+
.sort((a, b) => (b.startedAt ?? '').localeCompare(a.startedAt ?? ''));
|
|
254
|
+
}
|
|
255
|
+
export async function getRun(storage, ownerGhii, id, runId) {
|
|
256
|
+
const rec = await storage.getMemory(ownerGhii, runKey(id, runId));
|
|
257
|
+
return rec ? rec.value : null;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Compose the steps into one structural blueprint, derived from the resolved offers along the step
|
|
261
|
+
* order. Shows the input→output flow and the exact memory keys each step touches (as templates).
|
|
262
|
+
*/
|
|
263
|
+
export function buildBlueprint(def, resolved) {
|
|
264
|
+
const byId = new Map(resolved.map(r => [r.stepId, r]));
|
|
265
|
+
const nodes = def.steps.map(step => {
|
|
266
|
+
const r = byId.get(step.id);
|
|
267
|
+
const writes = new Set(collectSignalKeys(r?.success_signal));
|
|
268
|
+
if (r?.deliverableKey)
|
|
269
|
+
writes.add(r.deliverableKey);
|
|
270
|
+
return {
|
|
271
|
+
stepId: step.id,
|
|
272
|
+
agents: r?.agents ?? (Array.isArray(step.agent) ? step.agent : [step.agent]),
|
|
273
|
+
offerId: step.offer,
|
|
274
|
+
reads: collectSignalKeys(r?.required_to_function),
|
|
275
|
+
writes: [...writes],
|
|
276
|
+
};
|
|
277
|
+
});
|
|
278
|
+
const edges = [];
|
|
279
|
+
for (const step of def.steps)
|
|
280
|
+
for (const dep of step.after ?? [])
|
|
281
|
+
edges.push({ from: dep, to: step.id });
|
|
282
|
+
return { workflowId: def.id, nodes, edges };
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/services/workflow/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -305,6 +305,15 @@ export interface AppListOptions {
|
|
|
305
305
|
offset?: number;
|
|
306
306
|
freeOnly?: boolean;
|
|
307
307
|
}
|
|
308
|
+
export interface SubdomainSiteRecord {
|
|
309
|
+
subdomain: string;
|
|
310
|
+
kind: 'app' | 'redirect';
|
|
311
|
+
target: string;
|
|
312
|
+
enabled: boolean;
|
|
313
|
+
createdBy: string;
|
|
314
|
+
createdAt: string;
|
|
315
|
+
updatedAt: string;
|
|
316
|
+
}
|
|
308
317
|
export interface AppPurchaseRecord {
|
|
309
318
|
transactionId: string;
|
|
310
319
|
buyerGaii: string;
|
|
@@ -877,7 +886,7 @@ export interface ScheduledJobRecord {
|
|
|
877
886
|
* server-side OpenRouter completion (zero agent involvement); 'agent_task'
|
|
878
887
|
* materialises an AgentTaskRecord into the target agent's queue on each fire.
|
|
879
888
|
*/
|
|
880
|
-
type: 'extension' | 'core' | 'ai' | 'agent_task';
|
|
889
|
+
type: 'extension' | 'core' | 'ai' | 'agent_task' | 'workflow';
|
|
881
890
|
extensionName?: string;
|
|
882
891
|
instanceId?: string;
|
|
883
892
|
actionId?: string;
|
|
@@ -916,7 +925,7 @@ export interface ExecutionLogEntry {
|
|
|
916
925
|
id: string;
|
|
917
926
|
jobId: string;
|
|
918
927
|
jobName: string;
|
|
919
|
-
type: 'extension' | 'core' | 'ai' | 'agent_task';
|
|
928
|
+
type: 'extension' | 'core' | 'ai' | 'agent_task' | 'workflow';
|
|
920
929
|
extensionName?: string;
|
|
921
930
|
actionId?: string;
|
|
922
931
|
trigger: 'cron' | 'manual' | 'activate';
|
|
@@ -1663,6 +1672,7 @@ import type { SessionRepository } from './repositories/session.repository.js';
|
|
|
1663
1672
|
import type { PatRepository } from './repositories/pat.repository.js';
|
|
1664
1673
|
import type { AppRepository } from './repositories/app.repository.js';
|
|
1665
1674
|
import type { AppMarketplaceRepository } from './repositories/app-marketplace.repository.js';
|
|
1675
|
+
import type { SubdomainSiteRepository } from './repositories/subdomain-site.repository.js';
|
|
1666
1676
|
import type { ConfigRepository } from './repositories/config.repository.js';
|
|
1667
1677
|
import type { NotificationTemplateRepository } from './repositories/notification-template.repository.js';
|
|
1668
1678
|
import type { KnowledgeRepository } from './repositories/knowledge.repository.js';
|
|
@@ -1684,6 +1694,6 @@ import type { AgentActivityRepository } from './repositories/agent-activity.repo
|
|
|
1684
1694
|
import type { AgentMessageRepository } from './repositories/agent-message.repository.js';
|
|
1685
1695
|
import type { AgentTelemetryRepository, AgentWebhookRepository } from './repositories/agent-webhook.repository.js';
|
|
1686
1696
|
import type { AgentOnboardingRepository } from './repositories/agent-onboarding.repository.js';
|
|
1687
|
-
export interface Storage extends OwnerRepository, AgentRepository, MemoryRepository, ActionRepository, WorkRepository, WalletRepository, BoardRepository, OtkRepository, DisputeRepository, MicroMemoryRepository, FileRepository, IdentityRepository, SchemaRepository, ConsentRepository, CatalogueRepository, ModerationRepository, OrganismRepository, MarketplaceRepository, FederationRepository, NodeRepository, NotificationRepository, AuthRepository, SessionRepository, PatRepository, AppRepository, AppMarketplaceRepository, ConfigRepository, NotificationTemplateRepository, KnowledgeRepository, SchedulerRepository, ExtensionInstanceRepository, ReplicationQueueRepository, DeviceAuthRepository, OAuthRepository, SystemPromptRepository, PackageRepository, TemplateListingRepository, PackageInstanceRepository, CapabilityRepository, AgentTaskRepository, AgentDirectivesRepository, SharingGroupRepository, AgentActivityRepository, AgentMessageRepository, AgentTelemetryRepository, AgentWebhookRepository, AgentOnboardingRepository, StatsRepository {
|
|
1697
|
+
export interface Storage extends OwnerRepository, AgentRepository, MemoryRepository, ActionRepository, WorkRepository, WalletRepository, BoardRepository, OtkRepository, DisputeRepository, MicroMemoryRepository, FileRepository, IdentityRepository, SchemaRepository, ConsentRepository, CatalogueRepository, ModerationRepository, OrganismRepository, MarketplaceRepository, FederationRepository, NodeRepository, NotificationRepository, AuthRepository, SessionRepository, PatRepository, AppRepository, AppMarketplaceRepository, SubdomainSiteRepository, ConfigRepository, NotificationTemplateRepository, KnowledgeRepository, SchedulerRepository, ExtensionInstanceRepository, ReplicationQueueRepository, DeviceAuthRepository, OAuthRepository, SystemPromptRepository, PackageRepository, TemplateListingRepository, PackageInstanceRepository, CapabilityRepository, AgentTaskRepository, AgentDirectivesRepository, SharingGroupRepository, AgentActivityRepository, AgentMessageRepository, AgentTelemetryRepository, AgentWebhookRepository, AgentOnboardingRepository, StatsRepository {
|
|
1688
1698
|
}
|
|
1689
1699
|
//# sourceMappingURL=interface.d.ts.map
|