@desplega.ai/agent-swarm 2.4.3 → 2.4.5
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/{acp-adapter-1885dpr7.js → acp-adapter-2wdkktv6.js} +1 -2
- package/dist/{actions-pn76n32q.js → actions-c40ebcm4.js} +18 -18
- package/dist/{amp-adapter-af84rx1d.js → amp-adapter-wb67m95z.js} +2 -2
- package/dist/{app-6sv8mhzm.js → app-353vre8g.js} +3 -3
- package/dist/{assistant-sc2tf825.js → assistant-sj1njh23.js} +21 -21
- package/dist/{boot-reembed-y3m0ydzj.js → boot-reembed-b9c3az3c.js} +1 -1
- package/dist/{boot-reembed-gvxjs2py.js → boot-reembed-qdkvxeem.js} +1 -1
- package/dist/{boot-scrub-sweep-1j9mk05f.js → boot-scrub-sweep-m3wh8eks.js} +2 -2
- package/dist/{boot-seeds-37sp626b.js → boot-seeds-j2273s54.js} +4 -4
- package/dist/{claude-adapter-rp0jtnwr.js → claude-adapter-m7q0a085.js} +2 -2
- package/dist/{claude-managed-adapter-h2y889ge.js → claude-managed-adapter-5ptb6tzs.js} +2 -2
- package/dist/{claude-managed-setup-rdt248k7.js → claude-managed-setup-smrqk5j5.js} +3 -3
- package/dist/{claude-sdk-session-53rcw5we.js → claude-sdk-session-38xnz21e.js} +8284 -8267
- package/dist/{cli-6eyncg0y.js → cli-018r4jq6.js} +34 -6
- package/dist/{cli-sds5zzs8.js → cli-1f3qzw6y.js} +78 -12
- package/dist/{cli-f0p0f6ja.js → cli-1sp861s4.js} +7 -7
- package/dist/{cli-dm8p2dpf.js → cli-1syn2xy1.js} +10 -10
- package/dist/{cli-tkf4x6ha.js → cli-37j04k05.js} +11 -11
- package/dist/{cli-v87dr6e3.js → cli-3a45zcgm.js} +1 -1
- package/dist/{cli-1n9gdg56.js → cli-43x64hv3.js} +4 -4
- package/dist/{cli-p0qerd2r.js → cli-4zfqgjc5.js} +2 -2
- package/dist/{cli-aa3tb29r.js → cli-7c9qs530.js} +1 -1
- package/dist/{cli-9qtjfd60.js → cli-848hxdwj.js} +1 -1
- package/dist/{cli-1xsraagq.js → cli-94gwyg7m.js} +8 -8
- package/dist/{cli-0dxxwfkt.js → cli-9hstj09h.js} +17 -14
- package/dist/{cli-1012xb7j.js → cli-9yqgm9nd.js} +22 -22
- package/dist/{cli-pygdsgh8.js → cli-a92r1127.js} +1 -1
- package/dist/{cli-8vverzf7.js → cli-ba8ne1es.js} +5 -0
- package/dist/{cli-bxrqvpg5.js → cli-be2161h1.js} +7 -7
- package/dist/{cli-npfe9t1s.js → cli-bnes4z6b.js} +2 -2
- package/dist/{cli-aypbg9r2.js → cli-cxxe61f6.js} +1 -1
- package/dist/{cli-vq9gqarq.js → cli-dk44dxec.js} +1 -1
- package/dist/{cli-836ehxmt.js → cli-eww120g8.js} +3 -2
- package/dist/{cli-a0kcty51.js → cli-f01h25yt.js} +1 -1
- package/dist/{cli-mzkwkbdy.js → cli-f0g3pgvf.js} +1 -1
- package/dist/{cli-1ma335fz.js → cli-ftc1g5tj.js} +2 -2
- package/dist/{cli-4yef8ghv.js → cli-fv5hepyy.js} +3 -3
- package/dist/{cli-58vwn100.js → cli-g35m2xwm.js} +4 -4
- package/dist/{cli-qje9k2nh.js → cli-g9ypd5en.js} +12 -2
- package/dist/{cli-gx0j2khs.js → cli-j99azg3g.js} +3 -3
- package/dist/{cli-er83cjbn.js → cli-k8g16gz3.js} +416 -116
- package/dist/{cli-qp2m4btv.js → cli-kpw04va0.js} +2 -2
- package/dist/{cli-8y99kfey.js → cli-ms85309d.js} +33 -15
- package/dist/{cli-kgnkyabk.js → cli-n72rg53p.js} +1555 -645
- package/dist/{cli-e4d78xsv.js → cli-p14m2cnp.js} +1 -1
- package/dist/{cli-1eszr343.js → cli-qfxc84gh.js} +1 -1
- package/dist/{cli-wk28hzqn.js → cli-qwhy2qma.js} +1 -1
- package/dist/{cli-73ezfhha.js → cli-st8aw1m6.js} +228 -11
- package/dist/{cli-zvbb4n0e.js → cli-tw4p90jb.js} +92 -192
- package/dist/{cli-038fga5k.js → cli-v0yrfmdh.js} +148 -183
- package/dist/{cli-6aen3ezb.js → cli-v8fjakwf.js} +1 -1
- package/dist/{cli-99jez72r.js → cli-w9etnnxk.js} +6 -1
- package/dist/{cli-vcgscaan.js → cli-wt0jf9hm.js} +217 -80
- package/dist/{cli-s9rr4gr2.js → cli-xpa64rek.js} +1065 -305
- package/dist/{cli-h0mgxann.js → cli-z7d29rw9.js} +2 -2
- package/dist/cli.js +45 -20
- package/dist/{codex-adapter-2zrmab9b.js → codex-adapter-tn6k5mkg.js} +1 -1
- package/dist/{codex-session-runner-kbkz62vc.js → codex-session-runner-7vjt7jbw.js} +1 -1
- package/dist/{commands-hd574th6.js → commands-t7rz9146.js} +2 -2
- package/dist/{controller-pz5mcfg4.js → controller-m2jasma5.js} +2 -2
- package/dist/{controllers-connect-5rgq2hfk.js → controllers-connect-9ftpex99.js} +19 -19
- package/dist/{cursor-adapter-mgaprq0j.js → cursor-adapter-mjv79e4z.js} +1 -1
- package/dist/{db-6nf1207q.js → db-6sfrn9g3.js} +1 -1
- package/dist/{db-h06dxp05.js → db-rn673r06.js} +3 -3
- package/dist/{dispatcher-zthpy4m1.js → dispatcher-c155xz0p.js} +17 -17
- package/dist/{dsh-adapter-64dhw0j7.js → dsh-adapter-3mmszc1x.js} +1 -1
- package/dist/{external-channel-x01t7ke6.js → external-channel-35k6tkv8.js} +2 -2
- package/dist/{grok-adapter-h21jv594.js → grok-adapter-tfrq7tg1.js} +2 -3
- package/dist/handlers-7gw64dxw.js +39 -0
- package/dist/{heartbeat-zzfksckz.js → heartbeat-dyg4npkp.js} +20 -20
- package/dist/{hook-z4zhzj1f.js → hook-drspbwpe.js} +1 -1
- package/dist/{hook-3xfqhh2s.js → hook-x26b31bg.js} +1 -1
- package/dist/{http-q813tmya.js → http-pk972xyw.js} +571 -294
- package/dist/{index-va3y63es.js → index-6srwvd5b.js} +1 -2
- package/dist/{index-x8xbyn1t.js → index-arytgj5q.js} +1 -1
- package/dist/{index-wbbs14c5.js → index-bgdyvcnv.js} +17 -17
- package/dist/{index-s98037v0.js → index-cbxkmfc5.js} +1 -2
- package/dist/{index-c4ykd0f1.js → index-dr94zbnh.js} +13348 -11611
- package/dist/{index-m0a4ydqj.js → index-gabbcdn2.js} +17 -17
- package/dist/{index-220tk9bw.js → index-jwxkkex2.js} +139 -76
- package/dist/index-tfb26zhy.js +41 -0
- package/dist/{keepalive-y5t1my7m.js → keepalive-7yrng7px.js} +3 -3
- package/dist/{lead-2xwtq66b.js → lead-7e02z839.js} +29 -30
- package/dist/{maintenance-ybfsaedv.js → maintenance-e6cemdqt.js} +1 -1
- package/dist/{node-3v3f08f7.js → node-de6akczr.js} +10 -9
- package/dist/{oauth-refresh-sweep-909jmn12.js → oauth-refresh-sweep-yw3xdbcj.js} +2 -2
- package/dist/{onboard-xn6fkkys.js → onboard-0a9y5yrc.js} +2 -2
- package/dist/{otel-impl-e6mn0z13.js → otel-impl-trjpkfb7.js} +1 -1
- package/dist/{pricing-refresh-ygd362ep.js → pricing-refresh-d2b5my0y.js} +3 -3
- package/dist/{rbac-roles-mb470p4e.js → rbac-roles-hey3yv9d.js} +2 -2
- package/dist/{rbac-roles-c9axvfnz.js → rbac-roles-nxh5ahwk.js} +2 -2
- package/dist/{registry-rxw10xzg.js → registry-ajhexe44.js} +1 -1
- package/dist/{render-v2-g0306nh1.js → render-v2-rr3p2atg.js} +3 -3
- package/dist/{resume-v315hnq6.js → resume-2efkf1s1.js} +5 -5
- package/dist/{session-access-2zg285a1.js → session-access-s2mttxpw.js} +6 -4
- package/dist/{setup-a4mtf02k.js → setup-vypma5yt.js} +1 -1
- package/dist/{work-objects-9fr0fgtn.js → work-objects-rvhckdkp.js} +20 -20
- package/dist/{worker-qae22jeb.js → worker-5snytpbd.js} +29 -30
- package/dist/worker-token-xf11yyds.js +136 -0
- package/openapi.json +303 -13
- package/package.json +8 -8
- package/src/apps/action-runner.ts +4 -0
- package/src/apps/catalog.generated.json +209 -4
- package/src/apps/page-validator.ts +21 -3
- package/src/be/chunking.ts +42 -9
- package/src/be/db/tasks/draft-text.ts +15 -0
- package/src/be/db/tasks/read.ts +14 -1
- package/src/be/db.ts +5 -1
- package/src/be/memory/index-content.ts +36 -17
- package/src/be/memory/providers/openai-embedding.ts +115 -61
- package/src/be/memory/providers/sqlite-store.ts +69 -23
- package/src/be/memory/reranker.ts +31 -1
- package/src/be/memory/search-candidates.ts +47 -0
- package/src/be/memory/types.ts +14 -0
- package/src/be/migrations/232_agent_session_tokens.sql +41 -0
- package/src/be/scripts/typecheck.ts +2 -0
- package/src/be/seed-scripts/catalog/heartbeat-jev-gate.ts +116 -55
- package/src/be/seed-scripts/index.ts +2 -2
- package/src/be/swarm-config-guard.ts +40 -1
- package/src/be/task-attachment-store.ts +30 -0
- package/src/be/users.ts +169 -12
- package/src/cli.tsx +24 -0
- package/src/commands/worker-token.ts +164 -0
- package/src/extensions/catalog.generated.json +4 -4
- package/src/extensions/contract-types.generated.ts +1 -1
- package/src/extensions/contract.ts +7 -0
- package/src/fs/provider.ts +13 -1
- package/src/heartbeat/heartbeat.ts +31 -11
- package/src/http/apps.ts +43 -5
- package/src/http/codex-oauth-keep-warm.ts +27 -9
- package/src/http/config.ts +5 -3
- package/src/http/core.ts +2 -0
- package/src/http/fs.ts +54 -34
- package/src/http/mcp-body.ts +37 -0
- package/src/http/mcp-user.ts +3 -5
- package/src/http/mcp.ts +6 -7
- package/src/http/memory.ts +26 -15
- package/src/http/page-proxy.ts +61 -5
- package/src/http/pages-public.ts +27 -44
- package/src/http/pages.ts +4 -4
- package/src/http/script-runs.ts +2 -0
- package/src/http/session-access.ts +51 -2
- package/src/http/sessions.ts +249 -10
- package/src/http/tasks.ts +4 -32
- package/src/http/users.ts +12 -1
- package/src/integrations/chat-sdk/adapters.ts +7 -3
- package/src/integrations/chat-sdk/attachments.ts +90 -12
- package/src/integrations/chat-sdk/facts.ts +120 -0
- package/src/integrations/chat-sdk/inbound.ts +156 -8
- package/src/integrations/chat-sdk/limits.ts +24 -0
- package/src/integrations/chat-sdk/outbound-files.ts +186 -0
- package/src/integrations/chat-sdk/outbound.ts +234 -4
- package/src/integrations/chat-sdk/relay.ts +4 -1
- package/src/integrations/chat-sdk/router.ts +28 -2
- package/src/integrations/chat-sdk/steering.ts +9 -0
- package/src/integrations/chat-sdk/templates.ts +14 -0
- package/src/integrations/chat-sdk/thread-buffer.ts +4 -0
- package/src/mcp-limits.ts +20 -0
- package/src/pages/browser-sdk.ts +8 -3
- package/src/pages/feedback-overlay.ts +1 -1
- package/src/providers/acp-adapter.ts +33 -13
- package/src/providers/acp-swarm-events.ts +1 -1
- package/src/providers/amp-adapter.ts +1 -1
- package/src/providers/codex-adapter.ts +106 -119
- package/src/providers/codex-agents-md.ts +35 -229
- package/src/providers/codex-oauth/storage.ts +1 -1
- package/src/providers/cursor-adapter.ts +1 -1
- package/src/rbac/legacy-policy.ts +3 -1
- package/src/rbac/permissions.ts +4 -0
- package/src/realtime/transport.ts +1 -2
- package/src/script-workflows/workflow-ctx.ts +1 -0
- package/src/scripts-runtime/types/stdlib.d.ts +2 -0
- package/src/scripts-runtime/types/swarm-extension.d.ts +8 -0
- package/src/scripts-runtime/types/swarm-sdk.d.ts +2 -0
- package/src/server-user.ts +2 -0
- package/src/server.ts +2 -0
- package/src/slack/assistant.ts +2 -2
- package/src/slack/files.ts +2 -0
- package/src/slack/handlers.ts +4 -4
- package/src/slack/inbound-files.ts +39 -6
- package/src/slack/thread-buffer.ts +2 -1
- package/src/tasks/task-terminal-effects.ts +21 -17
- package/src/tests/acp-adapter.test.ts +10 -23
- package/src/tests/acp-fake-agent.ts +36 -0
- package/src/tests/acp-swarm-events.test.ts +1 -1
- package/src/tests/agent-session-tokens.test.ts +452 -0
- package/src/tests/apps-action-parent-task.test.ts +295 -0
- package/src/tests/apps-card-grid.test.ts +197 -0
- package/src/tests/apps-catalog-additions.test.ts +120 -0
- package/src/tests/apps-tree.test.ts +129 -0
- package/src/tests/chat-sdk-attachments-reply.test.ts +52 -0
- package/src/tests/chat-sdk-config.test.ts +11 -0
- package/src/tests/chat-sdk-facts.test.ts +23 -0
- package/src/tests/chat-sdk-inbound.test.ts +558 -4
- package/src/tests/chat-sdk-outbound-files.test.ts +652 -0
- package/src/tests/codex-adapter.test.ts +167 -242
- package/src/tests/codex-oauth-keep-warm.test.ts +85 -1
- package/src/tests/config-api-only-keys.test.ts +9 -0
- package/src/tests/config-session-auth.test.ts +14 -0
- package/src/tests/cors-allowlist.test.ts +1 -1
- package/src/tests/docs-index-footprint.test.js +2 -2
- package/src/tests/extensions-example-slack-reply-gate.test.ts +262 -91
- package/src/tests/grok-adapter.test.ts +3 -3
- package/src/tests/heartbeat-checklist.test.ts +33 -0
- package/src/tests/heartbeat-jev-gate-credentials.test.ts +44 -0
- package/src/tests/heartbeat-jev-gate.test.ts +265 -1
- package/src/tests/kv-page-proxy.test.ts +91 -5
- package/src/tests/launch-password-rejection.test.ts +2 -2
- package/src/tests/mcp-input-caps.test.ts +294 -0
- package/src/tests/memory-chunked-search-starvation.test.ts +200 -0
- package/src/tests/memory-embedding-input-cap.test.ts +114 -0
- package/src/tests/memory.test.ts +14 -0
- package/src/tests/migration-232-agent-session-tokens.test.ts +67 -0
- package/src/tests/page-guest-session.test.ts +19 -8
- package/src/tests/page-proxy-authed.test.ts +1 -1
- package/src/tests/page-proxy.test.ts +17 -10
- package/src/tests/page-session.test.ts +102 -1
- package/src/tests/pages-authed-mode.test.ts +82 -12
- package/src/tests/pages-password-mode.test.ts +5 -5
- package/src/tests/rbac-engine.test.ts +1 -0
- package/src/tests/realtime-transport.test.ts +13 -7
- package/src/tests/runtime-child-token-cleanup.test.ts +3 -3
- package/src/tests/script-connections.test.ts +2 -0
- package/src/tests/script-runs-http.test.ts +84 -0
- package/src/tests/scripts-http.test.ts +10 -1
- package/src/tests/session-route-posture.test.ts +2 -0
- package/src/tests/swarm-config-export-to-env.test.ts +22 -3
- package/src/tests/task-audio-transcription.test.ts +299 -0
- package/src/tests/task-completion-memory-chunking.test.ts +434 -0
- package/src/tests/task-terminal-secret-scrub.test.ts +6 -1
- package/src/tests/transcription.test.ts +299 -0
- package/src/tests/worker-token-cli.test.ts +76 -0
- package/src/tests/workflow-executors.test.ts +4 -2
- package/src/tests/workflow-system-one-decision-providers.test.ts +98 -1
- package/src/tests/workflow-system-one-decision.test.ts +2 -1
- package/src/tests/workflow-system-one-extraction.test.ts +805 -0
- package/src/tools/chat-access.ts +10 -0
- package/src/tools/chat-post.ts +31 -11
- package/src/tools/chat-reply.ts +32 -10
- package/src/tools/memory-search.ts +3 -1
- package/src/tools/system-one-decide.ts +17 -4
- package/src/types.ts +8 -1
- package/src/utils/config-env-export.ts +3 -1
- package/src/utils/page-session.ts +133 -20
- package/src/utils/request-auth-context.ts +2 -1
- package/src/utils/transcription.ts +246 -0
- package/src/workflows/definition.ts +7 -1
- package/src/workflows/engine.ts +18 -12
- package/src/workflows/executors/index.ts +1 -0
- package/src/workflows/executors/registry.ts +2 -0
- package/src/workflows/executors/system-one-decision.ts +84 -262
- package/src/workflows/executors/system-one-extract-wire.ts +57 -0
- package/src/workflows/executors/system-one-extraction.ts +830 -0
- package/src/workflows/executors/system-one-providers.ts +316 -114
- package/src/workflows/executors/system-one-transport.ts +264 -0
- package/templates/extensions/slack-reply-gate/README.md +24 -22
- package/templates/extensions/slack-reply-gate/hooks.ts +146 -95
- package/templates/extensions/slack-reply-gate/manifest.json +2 -2
- package/templates/official/lead/HEARTBEAT.md +1 -1
- package/templates/skills/apps/SKILL.md +31 -7
- package/templates/skills/apps/content.md +31 -7
- package/templates/skills/chat-sdk/content.md +6 -2
- package/templates/skills/code-quality/content.md +2 -1
- package/templates/skills/heartbeat-runbook/content.md +8 -8
- package/templates/skills/pages/content.md +6 -4
- package/templates/skills/swarm-scripts/SKILL.md +2 -2
- package/templates/skills/swarm-scripts/content.md +2 -2
- package/dist/cli-v1sjhn52.js +0 -7
- package/dist/handlers-2qjw434w.js +0 -39
- package/dist/index-d0g18bax.js +0 -41
|
@@ -39,14 +39,14 @@ import {
|
|
|
39
39
|
getResolvedConfig2,
|
|
40
40
|
getMcpServerById2,
|
|
41
41
|
init_db3
|
|
42
|
-
} from "./cli-
|
|
42
|
+
} from "./cli-wt0jf9hm.js";
|
|
43
43
|
import {
|
|
44
44
|
generateRandomCodeVerifier,
|
|
45
45
|
generateRandomState,
|
|
46
46
|
calculatePKCECodeChallenge,
|
|
47
47
|
oauthAppRowToProviderConfig,
|
|
48
48
|
ensureAuthorizationTokenOrThrow
|
|
49
|
-
} from "./cli-
|
|
49
|
+
} from "./cli-a92r1127.js";
|
|
50
50
|
import {
|
|
51
51
|
detachedProcessGroup,
|
|
52
52
|
registerProcessGroup,
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
import {
|
|
59
59
|
defaultAssetKey,
|
|
60
60
|
init_key
|
|
61
|
-
} from "./cli-
|
|
61
|
+
} from "./cli-eww120g8.js";
|
|
62
62
|
import {
|
|
63
63
|
init_zod
|
|
64
64
|
} from "./cli-4chz1hye.js";
|
|
@@ -178872,6 +178872,7 @@ var catalog_generated_default = {
|
|
|
178872
178872
|
"Markdown",
|
|
178873
178873
|
"SearchInput",
|
|
178874
178874
|
"Select",
|
|
178875
|
+
"NumberInput",
|
|
178875
178876
|
"Button",
|
|
178876
178877
|
"Metric",
|
|
178877
178878
|
"Alert",
|
|
@@ -178890,9 +178891,11 @@ var catalog_generated_default = {
|
|
|
178890
178891
|
"Form",
|
|
178891
178892
|
"Drawer",
|
|
178892
178893
|
"DetailList",
|
|
178894
|
+
"CardGrid",
|
|
178893
178895
|
"Kanban",
|
|
178894
178896
|
"Calendar",
|
|
178895
178897
|
"ContributionGraph",
|
|
178898
|
+
"Tree",
|
|
178896
178899
|
"ElementRef",
|
|
178897
178900
|
"ElementSlot"
|
|
178898
178901
|
],
|
|
@@ -178907,7 +178910,7 @@ var catalog_generated_default = {
|
|
|
178907
178910
|
],
|
|
178908
178911
|
components: {
|
|
178909
178912
|
Stack: {
|
|
178910
|
-
description: "THE primary layout primitive — a flex column (default) or row of its children. `gap`/`padding` use the shared spacing scale (none|xs|sm|md|lg|xl, default gap md); `align` is the cross axis, `justify` the main axis, `wrap` lets a row reflow. For rows, set `collapseBelow` (sm|md|lg) so the row stacks vertically on narrow viewports — filter bars should always set it. `motion` (rise|fade|none, default rise) is the entrance of the direct children on first paint: a 200ms fade plus a 4px rise, staggered 30ms; it never replays on data polls, nested Stacks inherit the parent's entrance, and reduced-motion viewers get a short fade. Use this as the page root and for every section; `Container` is the legacy 2-prop alias kept for older pages.",
|
|
178913
|
+
description: "THE primary layout primitive — a flex column (default) or row of its children. `gap`/`padding` use the shared spacing scale (none|xs|sm|md|lg|xl, default gap md); `align` is the cross axis, `justify` the main axis, `wrap` lets a row reflow. For rows, set `collapseBelow` (sm|md|lg) so the row stacks vertically on narrow viewports — filter bars should always set it. `motion` (rise|fade|none, default rise) is the entrance of the direct children on first paint: a 200ms fade plus a 4px rise, staggered 30ms; it never replays on data polls, nested Stacks inherit the parent's entrance, and reduced-motion viewers get a short fade. Use this as the page root and for every section; `Container` is the legacy 2-prop alias kept for older pages. `fill: true` makes this Stack grow to fill the remaining height of a `fill`-aware parent instead of sizing to content — chain it from the page root down to a scrolling leaf to build a viewport-height layout with no page scroll; a non-`fill` sibling keeps its natural height and the `fill` sibling absorbs whatever is left.",
|
|
178911
178914
|
slots: ["default"],
|
|
178912
178915
|
props: {
|
|
178913
178916
|
$schema: "http://json-schema.org/draft-07/schema#",
|
|
@@ -178943,6 +178946,9 @@ var catalog_generated_default = {
|
|
|
178943
178946
|
motion: {
|
|
178944
178947
|
type: "string",
|
|
178945
178948
|
enum: ["rise", "fade", "none"]
|
|
178949
|
+
},
|
|
178950
|
+
fill: {
|
|
178951
|
+
type: "boolean"
|
|
178946
178952
|
}
|
|
178947
178953
|
},
|
|
178948
178954
|
additionalProperties: false
|
|
@@ -179003,7 +179009,7 @@ var catalog_generated_default = {
|
|
|
179003
179009
|
}
|
|
179004
179010
|
},
|
|
179005
179011
|
Split: {
|
|
179006
|
-
description: "Two-pane layout. POSITIONAL children: the FIRST child is the left pane, the SECOND is the right pane, and any further children stack inside the right pane. `ratio` sizes them (1-1|1-2|2-1|1-3|3-1, default 2-1 = wide left). Below `collapseBelow` (sm|md|lg, default md) the panes stack vertically; `reverse` only flips that stacked order (right pane first on narrow screens).",
|
|
179012
|
+
description: "Two-pane layout. POSITIONAL children: the FIRST child is the left pane, the SECOND is the right pane, and any further children stack inside the right pane. `ratio` sizes them (1-1|1-2|2-1|1-3|3-1, default 2-1 = wide left). Below `collapseBelow` (sm|md|lg, default md) the panes stack vertically; `reverse` only flips that stacked order (right pane first on narrow screens). `fill: true` makes this Split grow to fill the remaining height of a `fill`-aware parent (same contract as `Stack.fill`) — both panes stretch to the full row height, so nesting a `fill` Split inside one pane of another `fill` Split is the standard way to build a 3+ column viewport-height layout (ratio is only ever 2 panes).",
|
|
179007
179013
|
slots: ["default"],
|
|
179008
179014
|
props: {
|
|
179009
179015
|
$schema: "http://json-schema.org/draft-07/schema#",
|
|
@@ -179027,6 +179033,9 @@ var catalog_generated_default = {
|
|
|
179027
179033
|
padding: {
|
|
179028
179034
|
type: "string",
|
|
179029
179035
|
enum: ["none", "xs", "sm", "md", "lg", "xl"]
|
|
179036
|
+
},
|
|
179037
|
+
fill: {
|
|
179038
|
+
type: "boolean"
|
|
179030
179039
|
}
|
|
179031
179040
|
},
|
|
179032
179041
|
additionalProperties: false
|
|
@@ -179244,7 +179253,7 @@ var catalog_generated_default = {
|
|
|
179244
179253
|
}
|
|
179245
179254
|
},
|
|
179246
179255
|
Select: {
|
|
179247
|
-
description: 'Dropdown filter/picker. `options` are plain strings or `{ value, label?, icon?, hint? }` objects. Writes the chosen value into state at `/ui/<id>/value` (clearing writes `null`); bind it into a Table with `"filters": { "<column>": { "$state": "/ui/<id>/value" } }`. `clearable` (default true) shows a clear button. `searchable` adds a type-to-filter field (on by default past 8 options; `searchPlaceholder` sets its hint). `multiple` picks several: the value is a string array (empty = nothing picked), which a Table filter reads as "cell is one of".',
|
|
179256
|
+
description: 'Dropdown filter/picker. `options` are plain strings or `{ value, label?, icon?, hint? }` objects. Writes the chosen value into state at `/ui/<id>/value` (clearing writes `null`); bind it into a Table with `"filters": { "<column>": { "$state": "/ui/<id>/value" } }`. `clearable` (default true) shows a clear button. `searchable` adds a type-to-filter field (on by default past 8 options; `searchPlaceholder` sets its hint). `multiple` picks several: the value is a string array (empty = nothing picked), which a Table filter reads as "cell is one of". `defaultValue` seeds `/ui/<id>/value` the first time it is read, before any interaction (a one-entry array with `multiple`).',
|
|
179248
179257
|
props: {
|
|
179249
179258
|
$schema: "http://json-schema.org/draft-07/schema#",
|
|
179250
179259
|
type: "object",
|
|
@@ -179341,12 +179350,41 @@ var catalog_generated_default = {
|
|
|
179341
179350
|
},
|
|
179342
179351
|
searchPlaceholder: {
|
|
179343
179352
|
type: "string"
|
|
179353
|
+
},
|
|
179354
|
+
defaultValue: {
|
|
179355
|
+
type: "string"
|
|
179344
179356
|
}
|
|
179345
179357
|
},
|
|
179346
179358
|
required: ["id", "options"],
|
|
179347
179359
|
additionalProperties: false
|
|
179348
179360
|
}
|
|
179349
179361
|
},
|
|
179362
|
+
NumberInput: {
|
|
179363
|
+
description: "Labelled numeric text field (decimal keyboard on touch devices, no debounce). Writes the parsed number into state at `/ui/<id>/value` on every change, or `null` when the field is empty; non-numeric text (a bare '-' mid-edit, letters) leaves the stored value untouched until it parses. `min`/`max` clamp the stored value, and the visible text snaps to that clamped value when the field loses focus.",
|
|
179364
|
+
props: {
|
|
179365
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
179366
|
+
type: "object",
|
|
179367
|
+
properties: {
|
|
179368
|
+
id: {
|
|
179369
|
+
type: "string"
|
|
179370
|
+
},
|
|
179371
|
+
label: {
|
|
179372
|
+
type: "string"
|
|
179373
|
+
},
|
|
179374
|
+
placeholder: {
|
|
179375
|
+
type: "string"
|
|
179376
|
+
},
|
|
179377
|
+
min: {
|
|
179378
|
+
type: "number"
|
|
179379
|
+
},
|
|
179380
|
+
max: {
|
|
179381
|
+
type: "number"
|
|
179382
|
+
}
|
|
179383
|
+
},
|
|
179384
|
+
required: ["id"],
|
|
179385
|
+
additionalProperties: false
|
|
179386
|
+
}
|
|
179387
|
+
},
|
|
179350
179388
|
Button: {
|
|
179351
179389
|
description: 'Interactive button. Wire to actions via `on.press`. `variant: "destructive-outline"` is the canonical red-outlined destructive look (standalone deletes should use it, not solid red). `disabled` accepts a constant or a bound boolean; `busyWith: "<actionName>"` swaps the label for a spinner (presses ignored) while that custom action is running, then shows a check plus `successLabel` for ~1.5s when it finishes ok. `icon` + `iconPosition` (start|end) add an icon from the curated set; `size` sm|default|lg. `shortcut` (one key, e.g. `"n"`) shows a keycap inside the button and presses it from anywhere on the page (not while typing in a field, not with Ctrl/Cmd/Alt). `hint` is a hover tooltip.',
|
|
179352
179390
|
props: {
|
|
@@ -180102,7 +180140,7 @@ var catalog_generated_default = {
|
|
|
180102
180140
|
}
|
|
180103
180141
|
},
|
|
180104
180142
|
Table: {
|
|
180105
|
-
description: 'Data table. Bind `data`/`loading`/`error` to a named query (`/queries/<name>/...`). `rowActions` chains receive `{ "$row": "<col>" }` (or `{ "$row": "" }` for the whole row) and `{ "$rowIndex": true }`. Destructive row actions always confirm via a dialog; override the copy with `confirm: { title, description, confirmLabel }`. `search` (case-insensitive substring across every listed column) and `filters` (per-column equality, `null`/`""` disables one; an array means "one of", which is what a multiple `Chips` writes, and an empty array disables it) narrow the polled rows client-side — bind them to a `SearchInput` / `Select` via `/ui/<id>/value`, or pin a constant (e.g. `"filters": { "pinned": true }`). Columns take `pinned: "left"|"right"` to survive horizontal scroll; `pagination` pages large row sets (auto past 200 rows); `density: "compact"` tightens row height. Column kinds: `status` (lifecycle values like pending/in_progress/completed/failed get the dashboard status icon, anything else a `tones` pill), `user` / `agent` (avatar + name), `relative` (smart time with the exact time on hover), `duration` (ms → 1m 23s), `progress` (bar, `max` default 100), `copy` (value + copy button), `switch` (runs the column\'s `onChange` chain with `$row` set to the new value; read-only without it), `link` (http(s) URL, opens in a new tab), `json` (compact single-line `JSON.stringify` preview, truncated). Columns also take `align`, `truncate: "middle"` (ids, paths), a header `icon` and `tooltip` (a row field shown on hover). `onRowClick` runs a chain with `$row` when a row is clicked — pair it with `app.navigate` + a Drawer and bind `selectedId` to the drawer param to highlight the open row. `rowId` names the id field (default `id`). Below 768px the table renders as a phone list (`mobile: "list"`, fields picked by `mobileFields: { title, subtitle?, meta?, status? }`); `mobile: "scroll"` keeps the grid. `emptyState: { icon?, title, body? }` replaces the empty message. Row actions take `icon` and `placement: "menu"` (collected into a More menu).',
|
|
180143
|
+
description: 'Data table. Bind `data`/`loading`/`error` to a named query (`/queries/<name>/...`). `rowActions` chains receive `{ "$row": "<col>" }` (or `{ "$row": "" }` for the whole row) and `{ "$rowIndex": true }`. Destructive row actions always confirm via a dialog; override the copy with `confirm: { title, description, confirmLabel }`. `search` (case-insensitive substring across every listed column) and `filters` (per-column equality, `null`/`""` disables one; an array means "one of", which is what a multiple `Chips` writes, and an empty array disables it) narrow the polled rows client-side — bind them to a `SearchInput` / `Select` via `/ui/<id>/value`, or pin a constant (e.g. `"filters": { "pinned": true }`). Columns take `pinned: "left"|"right"` to survive horizontal scroll; `pagination` pages large row sets (auto past 200 rows); `density: "compact"` tightens row height. Column kinds: `status` (lifecycle values like pending/in_progress/completed/failed get the dashboard status icon, anything else a `tones` pill), `user` / `agent` (avatar + name), `relative` (smart time with the exact time on hover), `duration` (ms → 1m 23s), `progress` (bar, `max` default 100), `copy` (value + copy button), `switch` (runs the column\'s `onChange` chain with `$row` set to the new value; read-only without it), `link` (http(s) URL, opens in a new tab), `json` (compact single-line `JSON.stringify` preview, truncated). Columns also take `align`, `truncate: "middle"` (ids, paths), a header `icon` and `tooltip` (a row field shown on hover), and `format` — a `{{field}}` template (e.g. `"{{name}} · v{{version}}"`) that combines several row fields into one cell and overrides `key`/`kind` rendering on desktop and in the phone list (placeholder names match `[w.]+`, no hyphens or spaces; sorting uses the composed text; `search` and `filters` still read the column\'s `key`). `onRowClick` runs a chain with `$row` when a row is clicked — pair it with `app.navigate` + a Drawer and bind `selectedId` to the drawer param to highlight the open row. `rowId` names the id field (default `id`). Below 768px the table renders as a phone list (`mobile: "list"`, fields picked by `mobileFields: { title, subtitle?, meta?, status? }`); `mobile: "scroll"` keeps the grid. `emptyState: { icon?, title, body? }` replaces the empty message. Row actions take `icon` and `placement: "menu"` (collected into a More menu).',
|
|
180106
180144
|
props: {
|
|
180107
180145
|
$schema: "http://json-schema.org/draft-07/schema#",
|
|
180108
180146
|
type: "object",
|
|
@@ -180176,6 +180214,9 @@ var catalog_generated_default = {
|
|
|
180176
180214
|
type: "string",
|
|
180177
180215
|
enum: ["left", "right"]
|
|
180178
180216
|
},
|
|
180217
|
+
format: {
|
|
180218
|
+
type: "string"
|
|
180219
|
+
},
|
|
180179
180220
|
align: {
|
|
180180
180221
|
type: "string",
|
|
180181
180222
|
enum: ["start", "end"]
|
|
@@ -180896,6 +180937,140 @@ var catalog_generated_default = {
|
|
|
180896
180937
|
additionalProperties: false
|
|
180897
180938
|
}
|
|
180898
180939
|
},
|
|
180940
|
+
CardGrid: {
|
|
180941
|
+
description: "Responsive grid of data-bound cards, one per row — the visual counterpart to `Table` for record browsers (projects, documents, media). Bind `data`/`loading`/`error` to a named query like Table. `titleKey` picks the row field shown as the card title. `imageKey` picks a row field holding an absolute http(s) image URL and adds an image tile to every card (a non-URL value or a failed load shows a placeholder); omit it for text-only cards. `fields` render as an unlabeled `·`-joined meta line under the title; each field's `kind` is one of `text`, `string`, `enum`, `number`, `boolean`, `date`, `badge` (with `tones`) or `json`. `onClick` is an action chain (params may use `$row` / `$rowIndex`) dispatched on card click or Enter/Space, commonly `app.navigate` into a detail page. `columns` is the same responsive shorthand as `Grid.columns` (default `{ base: 1, sm: 2, md: 3 }`). Renders 200 cards at a time with a Show more button.",
|
|
180942
|
+
props: {
|
|
180943
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
180944
|
+
type: "object",
|
|
180945
|
+
properties: {
|
|
180946
|
+
data: {
|
|
180947
|
+
type: "array",
|
|
180948
|
+
items: {
|
|
180949
|
+
type: "object",
|
|
180950
|
+
propertyNames: {
|
|
180951
|
+
type: "string"
|
|
180952
|
+
},
|
|
180953
|
+
additionalProperties: {}
|
|
180954
|
+
}
|
|
180955
|
+
},
|
|
180956
|
+
titleKey: {
|
|
180957
|
+
type: "string"
|
|
180958
|
+
},
|
|
180959
|
+
imageKey: {
|
|
180960
|
+
type: "string"
|
|
180961
|
+
},
|
|
180962
|
+
fields: {
|
|
180963
|
+
type: "array",
|
|
180964
|
+
items: {
|
|
180965
|
+
type: "object",
|
|
180966
|
+
properties: {
|
|
180967
|
+
key: {
|
|
180968
|
+
type: "string"
|
|
180969
|
+
},
|
|
180970
|
+
kind: {
|
|
180971
|
+
type: "string",
|
|
180972
|
+
enum: ["text", "string", "number", "boolean", "date", "badge", "enum", "json"]
|
|
180973
|
+
},
|
|
180974
|
+
tones: {
|
|
180975
|
+
type: "object",
|
|
180976
|
+
propertyNames: {
|
|
180977
|
+
type: "string"
|
|
180978
|
+
},
|
|
180979
|
+
additionalProperties: {
|
|
180980
|
+
type: "string",
|
|
180981
|
+
enum: [
|
|
180982
|
+
"neutral",
|
|
180983
|
+
"success",
|
|
180984
|
+
"active",
|
|
180985
|
+
"error",
|
|
180986
|
+
"info",
|
|
180987
|
+
"pending",
|
|
180988
|
+
"warning",
|
|
180989
|
+
"paused"
|
|
180990
|
+
]
|
|
180991
|
+
}
|
|
180992
|
+
}
|
|
180993
|
+
},
|
|
180994
|
+
required: ["key"],
|
|
180995
|
+
additionalProperties: false
|
|
180996
|
+
}
|
|
180997
|
+
},
|
|
180998
|
+
columns: {
|
|
180999
|
+
anyOf: [
|
|
181000
|
+
{
|
|
181001
|
+
type: "integer",
|
|
181002
|
+
minimum: 1,
|
|
181003
|
+
maximum: 6
|
|
181004
|
+
},
|
|
181005
|
+
{
|
|
181006
|
+
type: "object",
|
|
181007
|
+
properties: {
|
|
181008
|
+
base: {
|
|
181009
|
+
type: "integer",
|
|
181010
|
+
minimum: 1,
|
|
181011
|
+
maximum: 6
|
|
181012
|
+
},
|
|
181013
|
+
sm: {
|
|
181014
|
+
type: "integer",
|
|
181015
|
+
minimum: 1,
|
|
181016
|
+
maximum: 6
|
|
181017
|
+
},
|
|
181018
|
+
md: {
|
|
181019
|
+
type: "integer",
|
|
181020
|
+
minimum: 1,
|
|
181021
|
+
maximum: 6
|
|
181022
|
+
},
|
|
181023
|
+
lg: {
|
|
181024
|
+
type: "integer",
|
|
181025
|
+
minimum: 1,
|
|
181026
|
+
maximum: 6
|
|
181027
|
+
}
|
|
181028
|
+
},
|
|
181029
|
+
additionalProperties: false
|
|
181030
|
+
}
|
|
181031
|
+
]
|
|
181032
|
+
},
|
|
181033
|
+
onClick: {
|
|
181034
|
+
type: "array",
|
|
181035
|
+
items: {
|
|
181036
|
+
type: "object",
|
|
181037
|
+
properties: {
|
|
181038
|
+
action: {
|
|
181039
|
+
type: "string"
|
|
181040
|
+
},
|
|
181041
|
+
params: {
|
|
181042
|
+
type: "object",
|
|
181043
|
+
propertyNames: {
|
|
181044
|
+
type: "string"
|
|
181045
|
+
},
|
|
181046
|
+
additionalProperties: {}
|
|
181047
|
+
}
|
|
181048
|
+
},
|
|
181049
|
+
required: ["action"],
|
|
181050
|
+
additionalProperties: false
|
|
181051
|
+
}
|
|
181052
|
+
},
|
|
181053
|
+
loading: {
|
|
181054
|
+
type: "boolean"
|
|
181055
|
+
},
|
|
181056
|
+
error: {
|
|
181057
|
+
anyOf: [
|
|
181058
|
+
{
|
|
181059
|
+
type: "string"
|
|
181060
|
+
},
|
|
181061
|
+
{
|
|
181062
|
+
type: "null"
|
|
181063
|
+
}
|
|
181064
|
+
]
|
|
181065
|
+
},
|
|
181066
|
+
emptyMessage: {
|
|
181067
|
+
type: "string"
|
|
181068
|
+
}
|
|
181069
|
+
},
|
|
181070
|
+
required: ["titleKey"],
|
|
181071
|
+
additionalProperties: false
|
|
181072
|
+
}
|
|
181073
|
+
},
|
|
180899
181074
|
Kanban: {
|
|
180900
181075
|
description: 'Kanban board: one card per row, grouped into `columns` by the row\'s `columnField`. Bind `data`/`loading` to a named query. `titleField` is the card title; `cardFields` add label/value lines with the DetailList field kinds (badge tones, status, user, relative, copy, ...). Dragging a card to another column runs `onMove` with `$row` = the moved row, `columnField` already set to the new column — typically `[{ "action": "app.mutate", "params": { "model": "<m>", "op": "update", "rowId": { "$row": "id" }, "values": { "<columnField>": { "$row": "<columnField>" } } } }]`. Without `onMove` the board is read-only. `onCardClick` runs with `$row` (e.g. an `app.navigate` that opens a Drawer).',
|
|
180901
181076
|
props: {
|
|
@@ -181136,6 +181311,33 @@ var catalog_generated_default = {
|
|
|
181136
181311
|
additionalProperties: false
|
|
181137
181312
|
}
|
|
181138
181313
|
},
|
|
181314
|
+
Tree: {
|
|
181315
|
+
description: 'Collapsible tree view of a json-render flat element map. Bind `nodes` to a doc-shaped value (`{ root: string | string[], elements: Record<key,{type,children?}> }`) — usually `{ "$state": "/queries/<name>/data/0/<jsonColumn>" }`. Each row shows `key — type`; clicking one writes the node key to `/ui/<id>/value`, and the row bound to that path renders selected. A malformed or absent `nodes` value renders an empty state. Rows scroll inside a fixed-height viewport — `maxHeight` overrides the default `480px` — or set `fill: true` to grow inside a `fill`-aware parent and scroll within whatever height that gives it instead (ignores `maxHeight`). Outlines are cut at 2,000 rows with a notice; branches deeper than 32 levels keep a disabled chevron.',
|
|
181316
|
+
props: {
|
|
181317
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
181318
|
+
type: "object",
|
|
181319
|
+
properties: {
|
|
181320
|
+
id: {
|
|
181321
|
+
type: "string"
|
|
181322
|
+
},
|
|
181323
|
+
nodes: {
|
|
181324
|
+
description: "json-render flat element map: { root: string | string[], elements: Record<key,{type,children?}> } — usually a {$state} binding to a query row's json column"
|
|
181325
|
+
},
|
|
181326
|
+
label: {
|
|
181327
|
+
type: "string"
|
|
181328
|
+
},
|
|
181329
|
+
maxHeight: {
|
|
181330
|
+
description: "CSS max-height for the scrollable row list, e.g. '480px' (default '480px')",
|
|
181331
|
+
type: "string"
|
|
181332
|
+
},
|
|
181333
|
+
fill: {
|
|
181334
|
+
type: "boolean"
|
|
181335
|
+
}
|
|
181336
|
+
},
|
|
181337
|
+
required: ["id", "nodes"],
|
|
181338
|
+
additionalProperties: false
|
|
181339
|
+
}
|
|
181340
|
+
},
|
|
181139
181341
|
ElementRef: {
|
|
181140
181342
|
description: "Reference a reusable element from this app or an exported element from another app. Consumer children are inserted at the target's ElementSlot.",
|
|
181141
181343
|
slots: ["default"],
|
|
@@ -181366,6 +181568,9 @@ var catalog_generated_default = {
|
|
|
181366
181568
|
type: "string"
|
|
181367
181569
|
},
|
|
181368
181570
|
additionalProperties: {}
|
|
181571
|
+
},
|
|
181572
|
+
parentTaskId: {
|
|
181573
|
+
type: "string"
|
|
181369
181574
|
}
|
|
181370
181575
|
},
|
|
181371
181576
|
required: ["name"],
|
|
@@ -181418,12 +181623,20 @@ var ELEMENT_KEYS = new Set([
|
|
|
181418
181623
|
"repeat",
|
|
181419
181624
|
"watch"
|
|
181420
181625
|
]);
|
|
181421
|
-
var UI_STATE_COMPONENTS = new Set([
|
|
181626
|
+
var UI_STATE_COMPONENTS = new Set([
|
|
181627
|
+
"SearchInput",
|
|
181628
|
+
"Select",
|
|
181629
|
+
"NumberInput",
|
|
181630
|
+
"Tabs",
|
|
181631
|
+
"Chips",
|
|
181632
|
+
"Tree"
|
|
181633
|
+
]);
|
|
181422
181634
|
var PROP_ACTION_CHAINS = {
|
|
181423
181635
|
Table: ["onRowClick"],
|
|
181424
181636
|
Form: ["onSubmit"],
|
|
181425
181637
|
Kanban: ["onMove", "onCardClick"],
|
|
181426
|
-
Calendar: ["onSelect"]
|
|
181638
|
+
Calendar: ["onSelect"],
|
|
181639
|
+
CardGrid: ["onClick"]
|
|
181427
181640
|
};
|
|
181428
181641
|
var ITEM_ACTION_CHAINS = {
|
|
181429
181642
|
Table: [
|
|
@@ -181504,7 +181717,9 @@ function isActionSentinel(value) {
|
|
|
181504
181717
|
return true;
|
|
181505
181718
|
if (value.$rowIndex === true)
|
|
181506
181719
|
return true;
|
|
181507
|
-
|
|
181720
|
+
if (typeof value.$form === "string")
|
|
181721
|
+
return true;
|
|
181722
|
+
return typeof value.$chain === "string";
|
|
181508
181723
|
}
|
|
181509
181724
|
function appendPath(path, part) {
|
|
181510
181725
|
return path ? `${path}.${part}` : String(part);
|
|
@@ -181559,7 +181774,7 @@ function validateSchema(value, schema, path, allowActionSentinels, skipPath) {
|
|
|
181559
181774
|
if (isActionSentinel(value)) {
|
|
181560
181775
|
return allowActionSentinels ? { issues: [], stateRefs: [] } : {
|
|
181561
181776
|
issues: [
|
|
181562
|
-
issue(path, "$row, $rowIndex, and $
|
|
181777
|
+
issue(path, "$row, $rowIndex, $form, and $chain bindings are only allowed in action params")
|
|
181563
181778
|
],
|
|
181564
181779
|
stateRefs: []
|
|
181565
181780
|
};
|
|
@@ -183791,6 +184006,8 @@ export type AgentTaskStepConfig = {
|
|
|
183791
184006
|
routingNote?: string;
|
|
183792
184007
|
tags?: string[];
|
|
183793
184008
|
priority?: number;
|
|
184009
|
+
/** Task IDs that must complete before this task starts. */
|
|
184010
|
+
dependsOn?: string[];
|
|
183794
184011
|
offerMode?: boolean;
|
|
183795
184012
|
dir?: string;
|
|
183796
184013
|
vcsRepo?: string;
|