@rudderhq/server 0.7.2 → 0.7.4
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/agent-runtimes/registry.d.ts.map +1 -1
- package/dist/agent-runtimes/registry.js +0 -2
- package/dist/agent-runtimes/registry.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +1 -5
- package/dist/app.js.map +1 -1
- package/dist/bootstrap/create-http-app.d.ts +1 -2
- package/dist/bootstrap/create-http-app.d.ts.map +1 -1
- package/dist/bootstrap/create-http-app.js +13 -12
- package/dist/bootstrap/create-http-app.js.map +1 -1
- package/dist/bootstrap/register-api-routes.d.ts +1 -2
- package/dist/bootstrap/register-api-routes.d.ts.map +1 -1
- package/dist/bootstrap/register-api-routes.js +22 -4
- package/dist/bootstrap/register-api-routes.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/middleware/logger.js +2 -2
- package/dist/middleware/logger.js.map +1 -1
- package/dist/middleware/logger.test.js +26 -10
- package/dist/middleware/logger.test.js.map +1 -1
- package/dist/redaction.d.ts +4 -0
- package/dist/redaction.d.ts.map +1 -1
- package/dist/redaction.js +15 -0
- package/dist/redaction.js.map +1 -1
- package/dist/routes/agent-issue-creation.d.ts +25 -0
- package/dist/routes/agent-issue-creation.d.ts.map +1 -0
- package/dist/routes/agent-issue-creation.js +201 -0
- package/dist/routes/agent-issue-creation.js.map +1 -0
- package/dist/routes/app-builder.d.ts +3 -1
- package/dist/routes/app-builder.d.ts.map +1 -1
- package/dist/routes/app-builder.js +30 -22
- package/dist/routes/app-builder.js.map +1 -1
- package/dist/routes/approvals.d.ts.map +1 -1
- package/dist/routes/approvals.js +36 -9
- package/dist/routes/approvals.js.map +1 -1
- package/dist/routes/chats.d.ts.map +1 -1
- package/dist/routes/chats.js +23 -4
- package/dist/routes/chats.js.map +1 -1
- package/dist/routes/chats.preflight.d.ts +2 -1
- package/dist/routes/chats.preflight.d.ts.map +1 -1
- package/dist/routes/chats.preflight.js +7 -0
- package/dist/routes/chats.preflight.js.map +1 -1
- package/dist/routes/chats.stream-routes.d.ts.map +1 -1
- package/dist/routes/chats.stream-routes.js +14 -3
- package/dist/routes/chats.stream-routes.js.map +1 -1
- package/dist/routes/chats.stream-support.d.ts.map +1 -1
- package/dist/routes/chats.stream-support.js +8 -0
- package/dist/routes/chats.stream-support.js.map +1 -1
- package/dist/routes/computer.d.ts +30 -0
- package/dist/routes/computer.d.ts.map +1 -0
- package/dist/routes/computer.js +231 -0
- package/dist/routes/computer.js.map +1 -0
- package/dist/routes/goals.d.ts.map +1 -1
- package/dist/routes/goals.js +176 -27
- package/dist/routes/goals.js.map +1 -1
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +2 -0
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/instance-settings.d.ts.map +1 -1
- package/dist/routes/instance-settings.js +3 -0
- package/dist/routes/instance-settings.js.map +1 -1
- package/dist/routes/issues.comments-attachments.d.ts.map +1 -1
- package/dist/routes/issues.comments-attachments.js +90 -8
- package/dist/routes/issues.comments-attachments.js.map +1 -1
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +14 -2
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/issues.mutations.d.ts.map +1 -1
- package/dist/routes/issues.mutations.js +206 -52
- package/dist/routes/issues.mutations.js.map +1 -1
- package/dist/routes/managed-mcp-runtime.d.ts.map +1 -1
- package/dist/routes/managed-mcp-runtime.js +109 -7
- package/dist/routes/managed-mcp-runtime.js.map +1 -1
- package/dist/routes/organization-skills.d.ts.map +1 -1
- package/dist/routes/organization-skills.js +23 -1
- package/dist/routes/organization-skills.js.map +1 -1
- package/dist/routes/requests.d.ts +3 -0
- package/dist/routes/requests.d.ts.map +1 -0
- package/dist/routes/requests.js +122 -0
- package/dist/routes/requests.js.map +1 -0
- package/dist/routes/rudder-plugins.d.ts +4 -0
- package/dist/routes/rudder-plugins.d.ts.map +1 -0
- package/dist/routes/rudder-plugins.js +203 -0
- package/dist/routes/rudder-plugins.js.map +1 -0
- package/dist/services/activity-log.d.ts +0 -3
- package/dist/services/activity-log.d.ts.map +1 -1
- package/dist/services/activity-log.js +19 -42
- package/dist/services/activity-log.js.map +1 -1
- package/dist/services/activity.d.ts +3 -3
- package/dist/services/agent-issue-creation.d.ts +344 -0
- package/dist/services/agent-issue-creation.d.ts.map +1 -0
- package/dist/services/agent-issue-creation.js +675 -0
- package/dist/services/agent-issue-creation.js.map +1 -0
- package/dist/services/agent-run-context.d.ts.map +1 -1
- package/dist/services/agent-run-context.js +10 -4
- package/dist/services/agent-run-context.js.map +1 -1
- package/dist/services/agents.d.ts +14 -14
- package/dist/services/agents.d.ts.map +1 -1
- package/dist/services/agents.js +2 -1
- package/dist/services/agents.js.map +1 -1
- package/dist/services/app-builder.d.ts.map +1 -1
- package/dist/services/app-builder.js +24 -3
- package/dist/services/app-builder.js.map +1 -1
- package/dist/services/chat-agent-runs.d.ts +1 -0
- package/dist/services/chat-agent-runs.d.ts.map +1 -1
- package/dist/services/chat-agent-runs.js +1 -0
- package/dist/services/chat-agent-runs.js.map +1 -1
- package/dist/services/chat-assistant.d.ts.map +1 -1
- package/dist/services/chat-assistant.helpers.d.ts +3 -1
- package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
- package/dist/services/chat-assistant.helpers.js +25 -0
- package/dist/services/chat-assistant.helpers.js.map +1 -1
- package/dist/services/chat-assistant.js +57 -11
- package/dist/services/chat-assistant.js.map +1 -1
- package/dist/services/chat-generation-protocol.test.js +2 -2
- package/dist/services/chat-generation-protocol.test.js.map +1 -1
- package/dist/services/chat-queued-message-materialization.d.ts +1 -1
- package/dist/services/chats.create.d.ts +2 -2
- package/dist/services/chats.create.d.ts.map +1 -1
- package/dist/services/chats.d.ts +15 -15
- package/dist/services/chats.d.ts.map +1 -1
- package/dist/services/chats.helpers.d.ts +2 -2
- package/dist/services/chats.helpers.d.ts.map +1 -1
- package/dist/services/chats.helpers.goal-context.test.d.ts +2 -0
- package/dist/services/chats.helpers.goal-context.test.d.ts.map +1 -0
- package/dist/services/chats.helpers.goal-context.test.js +40 -0
- package/dist/services/chats.helpers.goal-context.test.js.map +1 -0
- package/dist/services/chats.helpers.js +27 -2
- package/dist/services/chats.helpers.js.map +1 -1
- package/dist/services/chats.js.map +1 -1
- package/dist/services/computer-broker.d.ts +35 -0
- package/dist/services/computer-broker.d.ts.map +1 -0
- package/dist/services/computer-broker.js +211 -0
- package/dist/services/computer-broker.js.map +1 -0
- package/dist/services/computer-broker.test.d.ts +2 -0
- package/dist/services/computer-broker.test.d.ts.map +1 -0
- package/dist/services/computer-broker.test.js +70 -0
- package/dist/services/computer-broker.test.js.map +1 -0
- package/dist/services/computer-capability.d.ts +13 -0
- package/dist/services/computer-capability.d.ts.map +1 -0
- package/dist/services/computer-capability.js +11 -0
- package/dist/services/computer-capability.js.map +1 -0
- package/dist/services/computer-capability.test.d.ts +2 -0
- package/dist/services/computer-capability.test.d.ts.map +1 -0
- package/dist/services/computer-capability.test.js +27 -0
- package/dist/services/computer-capability.test.js.map +1 -0
- package/dist/services/finance.d.ts +2 -2
- package/dist/services/goals.d.ts +267 -244
- package/dist/services/goals.d.ts.map +1 -1
- package/dist/services/goals.js +1279 -297
- package/dist/services/goals.js.map +1 -1
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/instance-settings.d.ts.map +1 -1
- package/dist/services/instance-settings.js +8 -3
- package/dist/services/instance-settings.js.map +1 -1
- package/dist/services/integrations/agent-integrations.d.ts +1 -1
- package/dist/services/issues.d.ts +86 -1
- package/dist/services/issues.d.ts.map +1 -1
- package/dist/services/issues.helpers.d.ts +4 -0
- package/dist/services/issues.helpers.d.ts.map +1 -1
- package/dist/services/issues.helpers.js +28 -6
- package/dist/services/issues.helpers.js.map +1 -1
- package/dist/services/issues.js +207 -127
- package/dist/services/issues.js.map +1 -1
- package/dist/services/knowledge-portability/organization-portability.files.d.ts +1 -1
- package/dist/services/knowledge-portability/organization-skills.catalog.d.ts +7 -1
- package/dist/services/knowledge-portability/organization-skills.catalog.d.ts.map +1 -1
- package/dist/services/knowledge-portability/organization-skills.catalog.js +10 -0
- package/dist/services/knowledge-portability/organization-skills.catalog.js.map +1 -1
- package/dist/services/knowledge-portability/organization-skills.d.ts +3 -1
- package/dist/services/knowledge-portability/organization-skills.d.ts.map +1 -1
- package/dist/services/knowledge-portability/organization-skills.js +80 -12
- package/dist/services/knowledge-portability/organization-skills.js.map +1 -1
- package/dist/services/mcp/managed-bindings.d.ts.map +1 -1
- package/dist/services/mcp/managed-bindings.js +18 -2
- package/dist/services/mcp/managed-bindings.js.map +1 -1
- package/dist/services/mcp/managed-client.d.ts +15 -0
- package/dist/services/mcp/managed-client.d.ts.map +1 -1
- package/dist/services/mcp/managed-client.js +23 -1
- package/dist/services/mcp/managed-client.js.map +1 -1
- package/dist/services/mcp/managed-client.test.js +73 -9
- package/dist/services/mcp/managed-client.test.js.map +1 -1
- package/dist/services/messenger.d.ts +3 -3
- package/dist/services/messenger.d.ts.map +1 -1
- package/dist/services/messenger.js +201 -65
- package/dist/services/messenger.js.map +1 -1
- package/dist/services/orgs.d.ts.map +1 -1
- package/dist/services/orgs.js +3 -1
- package/dist/services/orgs.js.map +1 -1
- package/dist/services/product-analytics.d.ts +2 -2
- package/dist/services/requests.d.ts +919 -0
- package/dist/services/requests.d.ts.map +1 -0
- package/dist/services/requests.js +532 -0
- package/dist/services/requests.js.map +1 -0
- package/dist/services/rudder-plugins.d.ts +107 -0
- package/dist/services/rudder-plugins.d.ts.map +1 -0
- package/dist/services/rudder-plugins.js +1760 -0
- package/dist/services/rudder-plugins.js.map +1 -0
- package/dist/services/rudder-plugins.test.d.ts +2 -0
- package/dist/services/rudder-plugins.test.d.ts.map +1 -0
- package/dist/services/rudder-plugins.test.js +191 -0
- package/dist/services/rudder-plugins.test.js.map +1 -0
- package/dist/services/runtime-kernel/heartbeat.core.d.ts +1 -0
- package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.core.js +1 -1
- package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.d.ts +65 -0
- package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.execute.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.execute.js +21 -5
- package/dist/services/runtime-kernel/heartbeat.execute.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.js +320 -108
- package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.recovery.d.ts +1 -0
- package/dist/services/runtime-kernel/heartbeat.recovery.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.recovery.js +39 -4
- package/dist/services/runtime-kernel/heartbeat.recovery.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.sessions.js +1 -1
- package/dist/services/runtime-kernel/heartbeat.sessions.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.terminal.d.ts +14 -1
- package/dist/services/runtime-kernel/heartbeat.terminal.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.terminal.js +46 -1
- package/dist/services/runtime-kernel/heartbeat.terminal.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts +1 -0
- package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.wakeup.js +124 -6
- package/dist/services/runtime-kernel/heartbeat.wakeup.js.map +1 -1
- package/dist/services/workspace-runtime.services.d.ts +1 -1
- package/package.json +18 -18
- package/resources/bundled-skills/app-builder/SKILL.md +39 -9
- package/resources/bundled-skills/app-builder/assets/scaffold/app/globals.css +109 -16
- package/resources/bundled-skills/app-builder/assets/scaffold/components/contacts-workspace.tsx +176 -152
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/alert.tsx +12 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/badge.tsx +27 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/button.tsx +9 -7
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/card.tsx +15 -3
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/empty.tsx +18 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/field.tsx +23 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/input.tsx +1 -1
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/label.tsx +1 -1
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/separator.tsx +6 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/skeleton.tsx +6 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/table.tsx +30 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/components.json +20 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/next-env.d.ts +1 -1
- package/resources/bundled-skills/app-builder/assets/scaffold/next.config.ts +19 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/package.json +2 -1
- package/resources/bundled-skills/app-builder/assets/scaffold/rudder.app.json +1 -1
- package/resources/bundled-skills/app-builder/assets/scaffold/rudder.ui.json +13 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/scripts/validate-rudder-ui.mjs +50 -0
- package/resources/bundled-skills/app-builder/assets/scaffold/tests/e2e/app.spec.ts +35 -1
- package/resources/bundled-skills/app-builder/evals/evals.json +2 -1
- package/resources/bundled-skills/app-builder/references/design-guidelines.md +19 -2
- package/resources/bundled-skills/app-builder/references/rudder-ui-preset.md +73 -0
- package/resources/bundled-skills/app-builder/references/scaffold-contract.md +12 -0
- package/resources/bundled-skills/app-builder/references/verification.md +6 -0
- package/resources/bundled-skills/app-builder/scripts/report-build-status.mjs +83 -0
- package/resources/bundled-skills/rudder-docs/SKILL.md +2 -2
- package/resources/bundled-skills/rudder-docs/evals/retrieval-authority-evals.json +40 -0
- package/resources/bundled-skills/rudder-docs/evals/trigger-evals.json +2 -2
- package/resources/bundled-skills/rudder-docs/references/api-reference.md +0 -2
- package/resources/bundled-skills/rudder-docs/references/cli-reference.md +7 -2
- package/resources/bundled-skills/rudder-docs/references/operating-practices.md +10 -6
- package/resources/bundled-skills/rudder-docs/references/plugin-authoring.md +38 -114
- package/resources/bundled-skills/rudder-docs/references/source-map.md +2 -0
- package/skills/app-builder/SKILL.md +39 -9
- package/skills/app-builder/assets/scaffold/app/globals.css +109 -16
- package/skills/app-builder/assets/scaffold/components/contacts-workspace.tsx +176 -152
- package/skills/app-builder/assets/scaffold/components/ui/alert.tsx +12 -0
- package/skills/app-builder/assets/scaffold/components/ui/badge.tsx +27 -0
- package/skills/app-builder/assets/scaffold/components/ui/button.tsx +9 -7
- package/skills/app-builder/assets/scaffold/components/ui/card.tsx +15 -3
- package/skills/app-builder/assets/scaffold/components/ui/empty.tsx +18 -0
- package/skills/app-builder/assets/scaffold/components/ui/field.tsx +23 -0
- package/skills/app-builder/assets/scaffold/components/ui/input.tsx +1 -1
- package/skills/app-builder/assets/scaffold/components/ui/label.tsx +1 -1
- package/skills/app-builder/assets/scaffold/components/ui/separator.tsx +6 -0
- package/skills/app-builder/assets/scaffold/components/ui/skeleton.tsx +6 -0
- package/skills/app-builder/assets/scaffold/components/ui/table.tsx +30 -0
- package/skills/app-builder/assets/scaffold/components.json +20 -0
- package/skills/app-builder/assets/scaffold/next-env.d.ts +1 -1
- package/skills/app-builder/assets/scaffold/next.config.ts +19 -0
- package/skills/app-builder/assets/scaffold/package.json +2 -1
- package/skills/app-builder/assets/scaffold/rudder.app.json +1 -1
- package/skills/app-builder/assets/scaffold/rudder.ui.json +13 -0
- package/skills/app-builder/assets/scaffold/scripts/validate-rudder-ui.mjs +50 -0
- package/skills/app-builder/assets/scaffold/tests/e2e/app.spec.ts +35 -1
- package/skills/app-builder/evals/evals.json +2 -1
- package/skills/app-builder/references/design-guidelines.md +19 -2
- package/skills/app-builder/references/rudder-ui-preset.md +73 -0
- package/skills/app-builder/references/scaffold-contract.md +12 -0
- package/skills/app-builder/references/verification.md +6 -0
- package/skills/app-builder/scripts/report-build-status.mjs +83 -0
- package/skills/rudder-docs/SKILL.md +2 -2
- package/skills/rudder-docs/evals/retrieval-authority-evals.json +40 -0
- package/skills/rudder-docs/evals/trigger-evals.json +2 -2
- package/skills/rudder-docs/references/api-reference.md +0 -2
- package/skills/rudder-docs/references/cli-reference.md +7 -2
- package/skills/rudder-docs/references/operating-practices.md +10 -6
- package/skills/rudder-docs/references/plugin-authoring.md +38 -114
- package/skills/rudder-docs/references/source-map.md +2 -0
- package/ui-dist/assets/{LibraryLiveSurface-cHCJmmsl.js → LibraryLiveSurface-D4uCo0l0.js} +1 -1
- package/ui-dist/assets/{abnfDiagram-VRR7QNED-BORJvkew.js → abnfDiagram-VRR7QNED-FF2qcR6A.js} +1 -1
- package/ui-dist/assets/addon-fit-4gL7JXzc.js +1 -0
- package/ui-dist/assets/{arc-DPUzhx87.js → arc-D5pLjh6B.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-Bz_hY8LM.js → architectureDiagram-ZJ3FMSHR-BvqY-HXg.js} +1 -1
- package/ui-dist/assets/{blockDiagram-677ZJIJ3-Bq1X3YkP.js → blockDiagram-677ZJIJ3-BU6ZbJ0s.js} +1 -1
- package/ui-dist/assets/{c4Diagram-LMCZKHZV-BawEM9Pc.js → c4Diagram-LMCZKHZV-Cl5Gsovj.js} +1 -1
- package/ui-dist/assets/channel-HcmprA3I.js +1 -0
- package/ui-dist/assets/{chunk-2Q5K7J3B-D0D5ZOaA.js → chunk-2Q5K7J3B-4a2agt_p.js} +1 -1
- package/ui-dist/assets/{chunk-32BRIVSS-T90P7lug.js → chunk-32BRIVSS-CF0oOO2T.js} +1 -1
- package/ui-dist/assets/{chunk-5VM5RSS4-jcAERTgh.js → chunk-5VM5RSS4-CsSq2zX2.js} +1 -1
- package/ui-dist/assets/{chunk-EX3LRPZG-t9-JXwnR.js → chunk-EX3LRPZG-B6riETVZ.js} +1 -1
- package/ui-dist/assets/{chunk-JWPE2WC7-hqgD1saC.js → chunk-JWPE2WC7-S-p1xu0r.js} +1 -1
- package/ui-dist/assets/{chunk-MOJQB5TN-BsSUoYzd.js → chunk-MOJQB5TN-mVE4v_LV.js} +1 -1
- package/ui-dist/assets/{chunk-RYQCIY6F-YcdDh2Zn.js → chunk-RYQCIY6F-CElbgpgs.js} +1 -1
- package/ui-dist/assets/{chunk-V7JOEXUC-ChFyH9Su.js → chunk-V7JOEXUC-8XM3povP.js} +1 -1
- package/ui-dist/assets/{chunk-VR4S4FIN-BjVK8IyX.js → chunk-VR4S4FIN-LrThp3ht.js} +1 -1
- package/ui-dist/assets/{chunk-XXDRQBXY-D-TvO9vT.js → chunk-XXDRQBXY-D38vLb4t.js} +1 -1
- package/ui-dist/assets/classDiagram-OUVF2IWQ-Dpe8LaLf.js +1 -0
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-Dpe8LaLf.js +1 -0
- package/ui-dist/assets/{cose-bilkent-JH36ORCC-DBwhASJG.js → cose-bilkent-JH36ORCC-CmpZMaDV.js} +1 -1
- package/ui-dist/assets/{cynefin-VYW2F7L2-SlCRmwl2.js → cynefin-VYW2F7L2-D3RnbBvI.js} +1 -1
- package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-DImV6N_p.js → cynefinDiagram-TSTJHNR4-DZTcUojp.js} +1 -1
- package/ui-dist/assets/{dagre-VKFMJZFB-FH4Wv8Zn.js → dagre-VKFMJZFB-6jXSDi0S.js} +1 -1
- package/ui-dist/assets/{diagram-FQU43EPY-CrZvQjId.js → diagram-FQU43EPY-DIMm3mfS.js} +1 -1
- package/ui-dist/assets/{diagram-G47NLZAW-B7IGl_T3.js → diagram-G47NLZAW-Cyo22v0_.js} +1 -1
- package/ui-dist/assets/{diagram-NH7WQ7WH-CB4i7H1a.js → diagram-NH7WQ7WH-CHDV0nSL.js} +1 -1
- package/ui-dist/assets/{diagram-OA4YK3LP-DNyWPYY9.js → diagram-OA4YK3LP-Jijx9vQO.js} +1 -1
- package/ui-dist/assets/{diagram-WEI45ONY-BAhxbhpi.js → diagram-WEI45ONY-CcL19HLE.js} +1 -1
- package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-ClXtQ9qt.js → ebnfDiagram-CCIWWBDH-D94h-RFQ.js} +1 -1
- package/ui-dist/assets/{erDiagram-Q63AITRT-DGXiMYfn.js → erDiagram-Q63AITRT-B3ypUGZX.js} +1 -1
- package/ui-dist/assets/{flowDiagram-23GEKE2U-CdZ-02zc.js → flowDiagram-23GEKE2U-DjCT6Y1o.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-NO4QXBWP-TxhzNpta.js → ganttDiagram-NO4QXBWP-C3QVhTc9.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-D6Q_w6wR.js → gitGraphDiagram-IHSO6WYX-D0trBzU5.js} +1 -1
- package/ui-dist/assets/{graph-CxNmbpl9.js → graph-D1zFmVUP.js} +1 -1
- package/ui-dist/assets/{index-Cx6oIZPm.js → index-B0GEsWui.js} +568 -593
- package/ui-dist/assets/{index-BA9tMBhO.js → index-B8bxQLfN.js} +1 -1
- package/ui-dist/assets/{index-C_nwI4Yj.js → index-BFktZ2tu.js} +1 -1
- package/ui-dist/assets/index-BT7dphT4.css +32 -0
- package/ui-dist/assets/{index-BoTz5S-X.js → index-Bk_yesiO.js} +1 -1
- package/ui-dist/assets/{index-CXnqg1Oq.js → index-BwutQLG1.js} +1 -1
- package/ui-dist/assets/{index-AkhgKOxC.js → index-CB4zr_Ku.js} +1 -1
- package/ui-dist/assets/{index-Rau2cGm0.js → index-CC89UPa-.js} +1 -1
- package/ui-dist/assets/{index-kbWUQ1um.js → index-CFWOO6yn.js} +1 -1
- package/ui-dist/assets/{index-DU2LI7f9.js → index-CK8u9b07.js} +1 -1
- package/ui-dist/assets/{index-C12QC1Ex.js → index-CRolpP90.js} +1 -1
- package/ui-dist/assets/{index-Bxz75ICF.js → index-CiCRRUVV.js} +1 -1
- package/ui-dist/assets/{index-Do78GymY.js → index-D8JG-IU9.js} +1 -1
- package/ui-dist/assets/{index-CW21qWFm.js → index-DKCiVvJo.js} +1 -1
- package/ui-dist/assets/{index-BujwWE3j.js → index-G2yfKEf_.js} +1 -1
- package/ui-dist/assets/{index-BQ87dGIq.js → index-or2C22bw.js} +1 -1
- package/ui-dist/assets/{infoDiagram-FWYZ7A6U-CnJd4-Jq.js → infoDiagram-FWYZ7A6U-Co0nkcV4.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-Bq-qc3pD.js → ishikawaDiagram-FXEZZL3T-CkIg1Jdu.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-5HDEW3XC-NSmpUGUA.js → journeyDiagram-5HDEW3XC-AYUT6JuJ.js} +1 -1
- package/ui-dist/assets/{kanban-definition-HUTT4EX6-D7pgWtfA.js → kanban-definition-HUTT4EX6-C3H2XW08.js} +1 -1
- package/ui-dist/assets/{layout-BRuo6LWe.js → layout-sZWyqNOu.js} +1 -1
- package/ui-dist/assets/{linear-CkaWI9Nd.js → linear-BLTYou8N.js} +1 -1
- package/ui-dist/assets/{map-CgA6tTpZ.js → map-zKBdHkX8.js} +1 -1
- package/ui-dist/assets/{mermaid.core-DrXOt-P6.js → mermaid.core-DbjdFip8.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-LN4V7U3C-D9ImeWBe.js → mindmap-definition-LN4V7U3C-DcDNQ4GQ.js} +1 -1
- package/ui-dist/assets/{pegDiagram-2B236MQR-Cq-zZ_zz.js → pegDiagram-2B236MQR-BGq1PngU.js} +1 -1
- package/ui-dist/assets/{pieDiagram-ENE6RG2P-FgNgy726.js → pieDiagram-ENE6RG2P-BfXWRzNb.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-BxQbmGmi.js → quadrantDiagram-ABIIQ3AL-AYMVAbo1.js} +1 -1
- package/ui-dist/assets/{railroadDiagram-RFXS5EU6-CrpbkPH2.js → railroadDiagram-RFXS5EU6-B0PoG0Ih.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-TGXJPOKE-DQ-65ZW6.js → requirementDiagram-TGXJPOKE-Cuuu9wfw.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-Bom0lMZm.js → sankeyDiagram-HTMAVEWB-BceAc42f.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-C1MSDLDj.js → sequenceDiagram-DBY2YBRQ-cqJ71-Rw.js} +1 -1
- package/ui-dist/assets/{sizeCapture-X5ZJPWSS-Bn1vxebD.js → sizeCapture-X5ZJPWSS-DQ6MibbA.js} +1 -1
- package/ui-dist/assets/{stateDiagram-2N3HPSRC-GRRQpmzI.js → stateDiagram-2N3HPSRC-Bdl-XY7t.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-Cjj7yPIO.js +1 -0
- package/ui-dist/assets/{swimlanes-5IMT3BWC-BcOOCZ4q.js → swimlanes-5IMT3BWC-Dpo2HDtE.js} +2 -2
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-CPmIkNCu.js +8 -0
- package/ui-dist/assets/{timeline-definition-FHXFAJF6-gi6amswh.js → timeline-definition-FHXFAJF6-BzmJ-xnC.js} +1 -1
- package/ui-dist/assets/{vennDiagram-L72KCM5P-B9uqeyQt.js → vennDiagram-L72KCM5P-BF2EI7vn.js} +1 -1
- package/ui-dist/assets/{wardleyDiagram-EHGQE667-BnqWAMiE.js → wardleyDiagram-EHGQE667-DM65x1i1.js} +1 -1
- package/ui-dist/assets/xterm-DZP7bLZ5.js +9 -0
- package/ui-dist/assets/{xychartDiagram-FW5EYKEG-BJXKltIN.js → xychartDiagram-FW5EYKEG-3Q2t9pdU.js} +1 -1
- package/ui-dist/index.html +2 -2
- package/dist/bootstrap/plugin-host-runtime.d.ts +0 -116
- package/dist/bootstrap/plugin-host-runtime.d.ts.map +0 -1
- package/dist/bootstrap/plugin-host-runtime.js +0 -179
- package/dist/bootstrap/plugin-host-runtime.js.map +0 -1
- package/dist/bundled-plugins/plugin-linear/README.md +0 -22
- package/dist/bundled-plugins/plugin-linear/dist/manifest.js +0 -183
- package/dist/bundled-plugins/plugin-linear/dist/manifest.js.map +0 -7
- package/dist/bundled-plugins/plugin-linear/dist/ui/index.js +0 -1285
- package/dist/bundled-plugins/plugin-linear/dist/ui/index.js.map +0 -7
- package/dist/bundled-plugins/plugin-linear/dist/worker.js +0 -10699
- package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +0 -7
- package/dist/bundled-plugins/plugin-linear/package.json +0 -42
- package/dist/routes/plugin-ui-static.d.ts +0 -70
- package/dist/routes/plugin-ui-static.d.ts.map +0 -1
- package/dist/routes/plugin-ui-static.js +0 -375
- package/dist/routes/plugin-ui-static.js.map +0 -1
- package/dist/routes/plugins.d.ts +0 -120
- package/dist/routes/plugins.d.ts.map +0 -1
- package/dist/routes/plugins.js +0 -1125
- package/dist/routes/plugins.js.map +0 -1
- package/dist/routes/plugins.operations-routes.d.ts +0 -28
- package/dist/routes/plugins.operations-routes.d.ts.map +0 -1
- package/dist/routes/plugins.operations-routes.js +0 -720
- package/dist/routes/plugins.operations-routes.js.map +0 -1
- package/dist/services/plugin-capability-validator.d.ts +0 -108
- package/dist/services/plugin-capability-validator.d.ts.map +0 -1
- package/dist/services/plugin-capability-validator.js +0 -268
- package/dist/services/plugin-capability-validator.js.map +0 -1
- package/dist/services/plugin-config-validator.d.ts +0 -26
- package/dist/services/plugin-config-validator.d.ts.map +0 -1
- package/dist/services/plugin-config-validator.js +0 -41
- package/dist/services/plugin-config-validator.js.map +0 -1
- package/dist/services/plugin-dev-watcher.d.ts +0 -47
- package/dist/services/plugin-dev-watcher.d.ts.map +0 -1
- package/dist/services/plugin-dev-watcher.js +0 -275
- package/dist/services/plugin-dev-watcher.js.map +0 -1
- package/dist/services/plugin-event-bus.d.ts +0 -149
- package/dist/services/plugin-event-bus.d.ts.map +0 -1
- package/dist/services/plugin-event-bus.js +0 -258
- package/dist/services/plugin-event-bus.js.map +0 -1
- package/dist/services/plugin-host-service-cleanup.d.ts +0 -14
- package/dist/services/plugin-host-service-cleanup.d.ts.map +0 -1
- package/dist/services/plugin-host-service-cleanup.js +0 -37
- package/dist/services/plugin-host-service-cleanup.js.map +0 -1
- package/dist/services/plugin-host-services.d.ts +0 -13
- package/dist/services/plugin-host-services.d.ts.map +0 -1
- package/dist/services/plugin-host-services.js +0 -933
- package/dist/services/plugin-host-services.js.map +0 -1
- package/dist/services/plugin-job-coordinator.d.ts +0 -81
- package/dist/services/plugin-job-coordinator.d.ts.map +0 -1
- package/dist/services/plugin-job-coordinator.js +0 -172
- package/dist/services/plugin-job-coordinator.js.map +0 -1
- package/dist/services/plugin-job-scheduler.d.ts +0 -163
- package/dist/services/plugin-job-scheduler.d.ts.map +0 -1
- package/dist/services/plugin-job-scheduler.js +0 -452
- package/dist/services/plugin-job-scheduler.js.map +0 -1
- package/dist/services/plugin-job-store.d.ts +0 -208
- package/dist/services/plugin-job-store.d.ts.map +0 -1
- package/dist/services/plugin-job-store.js +0 -350
- package/dist/services/plugin-job-store.js.map +0 -1
- package/dist/services/plugin-lifecycle.d.ts +0 -240
- package/dist/services/plugin-lifecycle.d.ts.map +0 -1
- package/dist/services/plugin-lifecycle.js +0 -439
- package/dist/services/plugin-lifecycle.js.map +0 -1
- package/dist/services/plugin-loader.core.d.ts +0 -40
- package/dist/services/plugin-loader.core.d.ts.map +0 -1
- package/dist/services/plugin-loader.core.js +0 -879
- package/dist/services/plugin-loader.core.js.map +0 -1
- package/dist/services/plugin-loader.d.ts +0 -30
- package/dist/services/plugin-loader.d.ts.map +0 -1
- package/dist/services/plugin-loader.helpers.d.ts +0 -495
- package/dist/services/plugin-loader.helpers.d.ts.map +0 -1
- package/dist/services/plugin-loader.helpers.js +0 -238
- package/dist/services/plugin-loader.helpers.js.map +0 -1
- package/dist/services/plugin-loader.js +0 -30
- package/dist/services/plugin-loader.js.map +0 -1
- package/dist/services/plugin-loader.worker-paths.d.ts +0 -37
- package/dist/services/plugin-loader.worker-paths.d.ts.map +0 -1
- package/dist/services/plugin-loader.worker-paths.js +0 -62
- package/dist/services/plugin-loader.worker-paths.js.map +0 -1
- package/dist/services/plugin-log-retention.d.ts +0 -20
- package/dist/services/plugin-log-retention.d.ts.map +0 -1
- package/dist/services/plugin-log-retention.js +0 -63
- package/dist/services/plugin-log-retention.js.map +0 -1
- package/dist/services/plugin-manifest-validator.d.ts +0 -90
- package/dist/services/plugin-manifest-validator.d.ts.map +0 -1
- package/dist/services/plugin-manifest-validator.js +0 -72
- package/dist/services/plugin-manifest-validator.js.map +0 -1
- package/dist/services/plugin-registry.d.ts +0 -2542
- package/dist/services/plugin-registry.d.ts.map +0 -1
- package/dist/services/plugin-registry.js +0 -536
- package/dist/services/plugin-registry.js.map +0 -1
- package/dist/services/plugin-runtime-sandbox.d.ts +0 -40
- package/dist/services/plugin-runtime-sandbox.d.ts.map +0 -1
- package/dist/services/plugin-runtime-sandbox.js +0 -154
- package/dist/services/plugin-runtime-sandbox.js.map +0 -1
- package/dist/services/plugin-secrets-handler.d.ts +0 -81
- package/dist/services/plugin-secrets-handler.d.ts.map +0 -1
- package/dist/services/plugin-secrets-handler.js +0 -275
- package/dist/services/plugin-secrets-handler.js.map +0 -1
- package/dist/services/plugin-state-store.d.ts +0 -92
- package/dist/services/plugin-state-store.d.ts.map +0 -1
- package/dist/services/plugin-state-store.js +0 -190
- package/dist/services/plugin-state-store.js.map +0 -1
- package/dist/services/plugin-stream-bus.d.ts +0 -29
- package/dist/services/plugin-stream-bus.d.ts.map +0 -1
- package/dist/services/plugin-stream-bus.js +0 -48
- package/dist/services/plugin-stream-bus.js.map +0 -1
- package/dist/services/plugin-tool-dispatcher.d.ts +0 -180
- package/dist/services/plugin-tool-dispatcher.d.ts.map +0 -1
- package/dist/services/plugin-tool-dispatcher.js +0 -224
- package/dist/services/plugin-tool-dispatcher.js.map +0 -1
- package/dist/services/plugin-tool-registry.d.ts +0 -192
- package/dist/services/plugin-tool-registry.d.ts.map +0 -1
- package/dist/services/plugin-tool-registry.js +0 -224
- package/dist/services/plugin-tool-registry.js.map +0 -1
- package/dist/services/plugin-worker-manager.d.ts +0 -260
- package/dist/services/plugin-worker-manager.d.ts.map +0 -1
- package/dist/services/plugin-worker-manager.js +0 -836
- package/dist/services/plugin-worker-manager.js.map +0 -1
- package/ui-dist/assets/channel-C08AyYJr.js +0 -1
- package/ui-dist/assets/classDiagram-OUVF2IWQ-BIXq6fec.js +0 -1
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-BIXq6fec.js +0 -1
- package/ui-dist/assets/index-BmXb0yC1.css +0 -1
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-KvSJhiLM.js +0 -1
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-Cr92NnJ4.js +0 -8
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
import type { NextConfig } from "next";
|
|
2
2
|
|
|
3
3
|
const nextConfig: NextConfig = {
|
|
4
|
+
devIndicators: false,
|
|
4
5
|
output: "standalone",
|
|
5
6
|
poweredByHeader: false,
|
|
7
|
+
turbopack: {
|
|
8
|
+
root: process.cwd(),
|
|
9
|
+
},
|
|
10
|
+
webpack(config, { isServer }) {
|
|
11
|
+
if (isServer) {
|
|
12
|
+
config.externals.push((
|
|
13
|
+
{ request }: { request?: string },
|
|
14
|
+
callback: (error?: Error | null, result?: string) => void,
|
|
15
|
+
) => {
|
|
16
|
+
if (request?.startsWith("node:")) {
|
|
17
|
+
callback(null, `commonjs ${request}`);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
callback();
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return config;
|
|
24
|
+
},
|
|
6
25
|
};
|
|
7
26
|
|
|
8
27
|
export default nextConfig;
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"db:migrate": "tsx scripts/migrate.ts",
|
|
18
18
|
"db:seed": "tsx scripts/seed.ts",
|
|
19
19
|
"data:snapshot": "tsx scripts/snapshot.ts",
|
|
20
|
-
"
|
|
20
|
+
"ui:check": "node scripts/validate-rudder-ui.mjs",
|
|
21
|
+
"verify": "pnpm ui:check && tsc --noEmit && vitest run && next build",
|
|
21
22
|
"predev": "tsx scripts/migrate.ts && tsx scripts/seed.ts"
|
|
22
23
|
},
|
|
23
24
|
"dependencies": {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { access, readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
const root = process.cwd();
|
|
5
|
+
const requiredFiles = [
|
|
6
|
+
"components.json",
|
|
7
|
+
"app/globals.css",
|
|
8
|
+
"components/ui/button.tsx",
|
|
9
|
+
"components/ui/field.tsx",
|
|
10
|
+
"components/ui/table.tsx",
|
|
11
|
+
"components/ui/empty.tsx",
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
function fail(message) {
|
|
15
|
+
console.error(`Rudder UI preset invalid: ${message}`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
let preset;
|
|
20
|
+
try {
|
|
21
|
+
preset = JSON.parse(await readFile(path.join(root, "rudder.ui.json"), "utf8"));
|
|
22
|
+
} catch {
|
|
23
|
+
fail("rudder.ui.json is missing or invalid JSON");
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (preset?.schemaVersion !== 1 || preset?.preset !== "rudder") {
|
|
27
|
+
fail("unsupported preset identity");
|
|
28
|
+
}
|
|
29
|
+
if (!Number.isInteger(preset?.revision) || preset.revision < 1) {
|
|
30
|
+
fail("revision must be a positive integer");
|
|
31
|
+
}
|
|
32
|
+
if (preset?.sourceOwnership !== "app") {
|
|
33
|
+
fail("generated Apps must own their component source");
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
for (const relativePath of requiredFiles) {
|
|
37
|
+
try {
|
|
38
|
+
await access(path.join(root, relativePath));
|
|
39
|
+
} catch {
|
|
40
|
+
fail(`required file is missing: ${relativePath}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const css = await readFile(path.join(root, "app/globals.css"), "utf8");
|
|
45
|
+
for (const token of ["--background", "--foreground", "--primary", "--destructive", "--border", "--ring", "--radius"]) {
|
|
46
|
+
if (!css.includes(`${token}:`)) fail(`semantic token is missing: ${token}`);
|
|
47
|
+
}
|
|
48
|
+
if (!css.includes("@theme inline")) fail("Tailwind semantic token mapping is missing");
|
|
49
|
+
|
|
50
|
+
console.log(`Rudder UI preset ${preset.revision}: ok`);
|
|
@@ -4,7 +4,7 @@ test("creates a contact and keeps it after reload", async ({ page }) => {
|
|
|
4
4
|
const suffix = crypto.randomUUID();
|
|
5
5
|
const name = `Avery ${suffix.slice(0, 8)}`;
|
|
6
6
|
await page.goto("/");
|
|
7
|
-
await expect(page.getByRole("heading", { name: "
|
|
7
|
+
await expect(page.getByRole("heading", { name: "Contacts", exact: true })).toBeVisible();
|
|
8
8
|
await page.getByLabel("Name").fill(name);
|
|
9
9
|
await page.getByLabel("Email").fill(`${suffix}@example.test`);
|
|
10
10
|
await page.getByLabel("Company").fill("Acme");
|
|
@@ -14,6 +14,40 @@ test("creates a contact and keeps it after reload", async ({ page }) => {
|
|
|
14
14
|
await expect(page.getByText(name)).toBeVisible();
|
|
15
15
|
});
|
|
16
16
|
|
|
17
|
+
test("ships the Rudder UI preset in system light and dark modes", async ({ browser }) => {
|
|
18
|
+
const lightPage = await browser.newPage({ colorScheme: "light" });
|
|
19
|
+
await lightPage.goto("/");
|
|
20
|
+
await expect(lightPage.getByText("Pipeline Desk")).toBeVisible();
|
|
21
|
+
const lightStyle = await lightPage.evaluate(() => {
|
|
22
|
+
const style = getComputedStyle(document.documentElement);
|
|
23
|
+
return {
|
|
24
|
+
background: getComputedStyle(document.body).backgroundColor,
|
|
25
|
+
radius: style.getPropertyValue("--radius"),
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
expect(Number.parseFloat(lightStyle.radius)).toBe(0.375);
|
|
29
|
+
|
|
30
|
+
const darkPage = await browser.newPage({ colorScheme: "dark" });
|
|
31
|
+
await darkPage.goto("/");
|
|
32
|
+
const darkBackground = await darkPage.evaluate(() => (
|
|
33
|
+
getComputedStyle(document.body).backgroundColor
|
|
34
|
+
));
|
|
35
|
+
expect(darkBackground).not.toBe(lightStyle.background);
|
|
36
|
+
await lightPage.close();
|
|
37
|
+
await darkPage.close();
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test("keeps the primary workflow usable at 390px", async ({ page }) => {
|
|
41
|
+
await page.setViewportSize({ width: 390, height: 844 });
|
|
42
|
+
await page.goto("/");
|
|
43
|
+
await expect(page.getByRole("heading", { name: "Contacts", exact: true })).toBeVisible();
|
|
44
|
+
await expect(page.getByRole("heading", { name: "Add contact" })).toBeVisible();
|
|
45
|
+
await expect(page.getByLabel("Search contacts")).toBeVisible();
|
|
46
|
+
await expect(page.getByRole("button", { name: "Delete Maya Chen" })).toBeVisible();
|
|
47
|
+
await expect(page.getByText("Northwind").first()).toBeVisible();
|
|
48
|
+
await expect(page.locator("nextjs-portal")).toBeHidden();
|
|
49
|
+
});
|
|
50
|
+
|
|
17
51
|
test("shows the empty-search state", async ({ page }) => {
|
|
18
52
|
await page.goto("/");
|
|
19
53
|
await page.getByLabel("Search contacts").fill("no matching record");
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"assertions": [
|
|
10
10
|
"Does not ask the user to choose a framework, database, package manager, or process topology.",
|
|
11
11
|
"Uses the maintained App Builder scaffold and SQLite persistence.",
|
|
12
|
+
"Uses the versioned Rudder UI preset and its semantic shadcn primitives instead of inventing a generic dashboard theme.",
|
|
12
13
|
"Does not ask for or place email credential values in Chat or source.",
|
|
13
14
|
"Includes the primary contact workflow plus import, persistence, and a production-shaped edge case in verification."
|
|
14
15
|
]
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
"files": [],
|
|
33
34
|
"assertions": [
|
|
34
35
|
"Does not inspect or mutate real customer records merely to design the table.",
|
|
35
|
-
"Uses the existing
|
|
36
|
+
"Uses the existing Rudder UI preset components and semantic tokens, preserves readable density, and avoids decorative dashboard clutter.",
|
|
36
37
|
"Verifies the table at desktop width and a 390px viewport.",
|
|
37
38
|
"Captures rendered screenshot evidence and checks an empty or error state."
|
|
38
39
|
]
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Design for the user's actual workflow rather than for a technology demo.
|
|
4
4
|
|
|
5
|
+
For new maintained Apps, begin with the scaffold's versioned Rudder UI preset.
|
|
6
|
+
Do not replace its semantic tokens with a generic shadcn preset, a one-off
|
|
7
|
+
palette, or copied host application CSS. The generated App owns its component
|
|
8
|
+
source and must remain independently runnable outside Rudder.
|
|
9
|
+
|
|
5
10
|
- Put the primary action and current work state above decorative summaries.
|
|
6
11
|
- Use tables for operational lists, with search, meaningful filters, sorting,
|
|
7
12
|
pagination when needed, empty states, and clear row actions.
|
|
@@ -11,10 +16,22 @@ Design for the user's actual workflow rather than for a technology demo.
|
|
|
11
16
|
navigation, not both.
|
|
12
17
|
- Prefer readable density for CRM and marketing data. Avoid oversized KPI cards,
|
|
13
18
|
excessive gradients, glass panels, and placeholder charts.
|
|
14
|
-
- Use the scaffold's
|
|
15
|
-
one-off styling.
|
|
19
|
+
- Use the scaffold's shadcn primitives and semantic theme tokens before adding
|
|
20
|
+
new components or one-off styling. Compose `Button`, `Input`, `Field`,
|
|
21
|
+
`Table`, `Badge`, `Alert`, `Empty`, `Skeleton`, and `Separator` instead of
|
|
22
|
+
recreating those patterns with styled `div` elements.
|
|
23
|
+
- Keep Rudder's default visual character: calm, dense, operational, quiet, and
|
|
24
|
+
precise. Use compact radii, low-contrast borders, restrained elevation, one
|
|
25
|
+
clear primary action, and color for state or emphasis rather than decoration.
|
|
26
|
+
- Use semantic utilities such as `bg-background`, `text-foreground`,
|
|
27
|
+
`bg-muted`, and `text-destructive`. Do not hardcode product colors in
|
|
28
|
+
workflow components or add component-local dark-mode colors.
|
|
29
|
+
- Treat the preset as a starting system, not a brand lock. When the brief calls
|
|
30
|
+
for a distinct brand, keep the component structure, density, accessibility,
|
|
31
|
+
and state behavior while changing the named token layer deliberately.
|
|
16
32
|
- Support keyboard use, visible focus, semantic headings, accessible names, and
|
|
17
33
|
error text that does not rely on color.
|
|
18
34
|
- Verify at desktop width and at 390px mobile width unless the brief excludes
|
|
19
35
|
mobile.
|
|
20
36
|
- Show loading, empty, error, populated, and destructive-operation states.
|
|
37
|
+
- Run `pnpm ui:check` before final verification for new maintained Apps.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Rudder UI Preset
|
|
2
|
+
|
|
3
|
+
The maintained scaffold includes a versioned, source-owned shadcn preset for
|
|
4
|
+
building local operator tools that feel immediately at home in Rudder.
|
|
5
|
+
|
|
6
|
+
## Source Of Truth
|
|
7
|
+
|
|
8
|
+
- `rudder.ui.json` identifies the preset and revision.
|
|
9
|
+
- `components.json` makes the generated project a conventional shadcn project.
|
|
10
|
+
- `app/globals.css` owns semantic color, radius, typography, and light/dark
|
|
11
|
+
tokens.
|
|
12
|
+
- `components/ui/` owns copied component source. Generated Apps do not import
|
|
13
|
+
components or CSS from the Rudder repository at runtime.
|
|
14
|
+
- `scripts/validate-rudder-ui.mjs` checks that the preset contract remains
|
|
15
|
+
present before handoff.
|
|
16
|
+
|
|
17
|
+
For new Apps, use this preset without asking the user to select a shadcn style,
|
|
18
|
+
base palette, accent, radius, or component library. The default is Rudder's
|
|
19
|
+
spacious-but-compact `luma` character, neutral surfaces, emerald action color,
|
|
20
|
+
and system light/dark mode.
|
|
21
|
+
|
|
22
|
+
## Composition Rules
|
|
23
|
+
|
|
24
|
+
1. Start with the shipped primitives. Extend them with variants when the same
|
|
25
|
+
need recurs; do not restyle each call site.
|
|
26
|
+
2. Use semantic Tailwind utilities rather than raw color utilities. New named
|
|
27
|
+
product colors belong in the token layer.
|
|
28
|
+
3. Keep normal controls between 32 and 36 pixels high, use compact radii, and
|
|
29
|
+
reserve pills for true circular or exceptional status affordances.
|
|
30
|
+
4. Bind native `button`, `input`, `select`, and `textarea` text to the inherited
|
|
31
|
+
semantic foreground color so system dark mode cannot reintroduce browser-UA
|
|
32
|
+
contrast regressions.
|
|
33
|
+
5. Use one primary panel or table region. Cards group independent objects or
|
|
34
|
+
actions; they are not wrappers for every section.
|
|
35
|
+
6. Operational lists require search or filtering when useful, readable row
|
|
36
|
+
actions, empty/loading/error states, and horizontal containment on narrow
|
|
37
|
+
screens.
|
|
38
|
+
7. Use Lucide icons for familiar actions. Icon-only controls need accessible
|
|
39
|
+
labels; icons inside buttons inherit their size from `Button`.
|
|
40
|
+
8. Preserve keyboard focus, semantic headings, persistent labels, inline
|
|
41
|
+
validation, and destructive confirmation.
|
|
42
|
+
|
|
43
|
+
## Appearance Boundary
|
|
44
|
+
|
|
45
|
+
The preset is copied into the App as a stable creation-time baseline. It does
|
|
46
|
+
not read Rudder's browser-local Appearance preferences or import host CSS at
|
|
47
|
+
runtime. This keeps the App portable and prevents a later Rudder theme change
|
|
48
|
+
from silently changing an independently branded product.
|
|
49
|
+
|
|
50
|
+
An App may add a documented host-theme bridge later, but light/dark following
|
|
51
|
+
must be optional and the standalone URL must still render correctly. Changing
|
|
52
|
+
that boundary is product behavior, not an incidental styling edit.
|
|
53
|
+
|
|
54
|
+
## Existing Projects
|
|
55
|
+
|
|
56
|
+
Do not install or overwrite the preset in an existing project by default.
|
|
57
|
+
Inspect its framework, component library, tokens, and brand first. If the user
|
|
58
|
+
explicitly asks to align it with Rudder, preserve application behavior and
|
|
59
|
+
choose a bounded migration:
|
|
60
|
+
|
|
61
|
+
- token-only alignment when components are already coherent;
|
|
62
|
+
- primitive-by-primitive alignment when a source-owned component system exists;
|
|
63
|
+
- full preset adoption only when the user accepts the wider visual change.
|
|
64
|
+
|
|
65
|
+
Never run a shadcn overwrite command over locally modified components without
|
|
66
|
+
explicit approval and a reviewed diff.
|
|
67
|
+
|
|
68
|
+
## Verification
|
|
69
|
+
|
|
70
|
+
Run `pnpm ui:check`, typecheck, tests, build, and the App's Playwright suite.
|
|
71
|
+
In Browser, inspect the primary workflow, loading or empty state, inline error,
|
|
72
|
+
destructive action, desktop layout, 390px layout, and light/dark contrast.
|
|
73
|
+
Capture the useful populated state rather than a decorative empty dashboard.
|
|
@@ -25,6 +25,8 @@ definition through **Apps + > Add local web project** before anything runs.
|
|
|
25
25
|
|
|
26
26
|
- Next.js App Router, React, and TypeScript
|
|
27
27
|
- Tailwind CSS with shadcn-style component source owned by the project
|
|
28
|
+
- a versioned Rudder UI preset with semantic light/dark tokens and compact
|
|
29
|
+
operator-tool primitives
|
|
28
30
|
- SQLite with Drizzle ORM
|
|
29
31
|
- Zod at API, import, and form boundaries
|
|
30
32
|
- Vitest for unit tests and Playwright for browser tests
|
|
@@ -36,6 +38,8 @@ implementation detail and must not become a user decision.
|
|
|
36
38
|
## Required Files And Behaviors
|
|
37
39
|
|
|
38
40
|
- `rudder.app.json` uses schema version 1 and a maintained template revision.
|
|
41
|
+
- `rudder.ui.json` identifies the source-owned Rudder UI preset revision;
|
|
42
|
+
`components.json` keeps the project compatible with the normal shadcn CLI.
|
|
39
43
|
- `/api/__rudder/health` returns readiness only after the app can open its
|
|
40
44
|
selected database.
|
|
41
45
|
- `RUDDER_APP_DATA_MODE=development|production` selects the database without
|
|
@@ -64,6 +68,12 @@ manifest.
|
|
|
64
68
|
## Commands
|
|
65
69
|
|
|
66
70
|
- `pnpm dev`: migrate the development database, then run loopback development.
|
|
71
|
+
- On Windows, Rudder's managed preview may select Next.js webpack while keeping
|
|
72
|
+
`node:*` built-ins external to the server bundle. This preserves the short
|
|
73
|
+
managed dependency layout required by native package executables without
|
|
74
|
+
changing the App's website output. The managed runtime supplies the same
|
|
75
|
+
compatibility to existing revision-1 Apps without rewriting their
|
|
76
|
+
`next.config.ts`, `next-env.d.ts`, or other App-owned source files.
|
|
67
77
|
- `pnpm typecheck`: TypeScript validation.
|
|
68
78
|
- `pnpm test`: unit and API-contract tests.
|
|
69
79
|
- `pnpm build`: production build.
|
|
@@ -73,5 +83,7 @@ manifest.
|
|
|
73
83
|
- `pnpm data:snapshot`: copy the selected SQLite database to `data/snapshots/`
|
|
74
84
|
using SQLite's backup API.
|
|
75
85
|
- `pnpm verify`: typecheck, tests, and build.
|
|
86
|
+
- `pnpm ui:check`: validate the maintained Rudder UI preset files and semantic
|
|
87
|
+
token contract.
|
|
76
88
|
|
|
77
89
|
Formal app start must not silently migrate real data. Promotion owns that step.
|
|
@@ -18,6 +18,12 @@ substitute a shell HTTP response for UI acceptance.
|
|
|
18
18
|
8. Capture current screenshots of the useful final state.
|
|
19
19
|
9. Materialize screenshots in Chat, Run, or Library evidence.
|
|
20
20
|
|
|
21
|
+
Only after all required checks pass may the Agent report
|
|
22
|
+
`verified_source_ready` for the originating App. That report is not a prose
|
|
23
|
+
claim: it is a run-scoped handoff that causes Desktop to repeat its maintained
|
|
24
|
+
checks, start the attested loopback process, and open the App for the user.
|
|
25
|
+
Questions, partial results, and blockers must never emit the handoff.
|
|
26
|
+
|
|
21
27
|
Close temporary run-owned tabs after verification. Never use the user's
|
|
22
28
|
persistent app view as an Agent test fixture when that could mutate formal
|
|
23
29
|
data.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const STATUS = process.argv[2];
|
|
4
|
+
const APP_ID = process.argv[3];
|
|
5
|
+
const ALLOWED_STATUSES = new Set(["building", "verified_source_ready", "failed"]);
|
|
6
|
+
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
7
|
+
|
|
8
|
+
if (!ALLOWED_STATUSES.has(STATUS) || !UUID_PATTERN.test(APP_ID ?? "")) {
|
|
9
|
+
console.error("Usage: report-build-status.mjs <building|verified_source_ready|failed> <app-id>");
|
|
10
|
+
process.exit(2);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const apiUrl = process.env.RUDDER_API_URL?.trim();
|
|
14
|
+
const apiKey = process.env.RUDDER_API_KEY?.trim();
|
|
15
|
+
const orgId = process.env.RUDDER_ORG_ID?.trim();
|
|
16
|
+
const runId = process.env.RUDDER_RUN_ID?.trim();
|
|
17
|
+
if (!apiUrl || !apiKey || !orgId || !runId) {
|
|
18
|
+
console.error("Rudder run context is unavailable; do not report a completed App handoff.");
|
|
19
|
+
process.exit(2);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const base = apiUrl.replace(/\/+$/u, "");
|
|
23
|
+
const apiBase = new URL(base).pathname.replace(/\/+$/u, "").endsWith("/api")
|
|
24
|
+
? base
|
|
25
|
+
: `${base}/api`;
|
|
26
|
+
const endpoint = `${apiBase}/app-builder/${encodeURIComponent(APP_ID)}/build?orgId=${encodeURIComponent(orgId)}`;
|
|
27
|
+
const headers = {
|
|
28
|
+
authorization: `Bearer ${apiKey}`,
|
|
29
|
+
"content-type": "application/json",
|
|
30
|
+
};
|
|
31
|
+
const currentResponse = await fetch(
|
|
32
|
+
`${apiBase}/orgs/${encodeURIComponent(orgId)}/app-builder`,
|
|
33
|
+
{ headers },
|
|
34
|
+
);
|
|
35
|
+
if (!currentResponse.ok) {
|
|
36
|
+
console.error(`Rudder could not read the App handoff state (${currentResponse.status}).`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
const current = (await currentResponse.json()).find((app) => app.id === APP_ID);
|
|
40
|
+
if (!current) {
|
|
41
|
+
console.error("Rudder App handoff identity was not found in this organization.");
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
const duplicateRunId = STATUS === "verified_source_ready"
|
|
45
|
+
? current.latestVerificationRunId
|
|
46
|
+
: current.latestBuildRunId;
|
|
47
|
+
if (current.buildStatus === STATUS && duplicateRunId === runId) {
|
|
48
|
+
console.log(`App Builder status: ${current.buildStatus}`);
|
|
49
|
+
process.exit(0);
|
|
50
|
+
}
|
|
51
|
+
const allowedCurrentStatuses = STATUS === "building"
|
|
52
|
+
? new Set(["preparing", "ready", "launch_failed", "failed"])
|
|
53
|
+
: STATUS === "verified_source_ready"
|
|
54
|
+
? new Set(["building"])
|
|
55
|
+
: new Set(["preparing", "building"]);
|
|
56
|
+
if (!allowedCurrentStatuses.has(current.buildStatus)) {
|
|
57
|
+
console.error(
|
|
58
|
+
`Rudder rejected the stale App handoff transition ${current.buildStatus} -> ${STATUS}.`,
|
|
59
|
+
);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
const response = await fetch(
|
|
63
|
+
endpoint,
|
|
64
|
+
{
|
|
65
|
+
method: "PATCH",
|
|
66
|
+
headers,
|
|
67
|
+
body: JSON.stringify({
|
|
68
|
+
status: STATUS,
|
|
69
|
+
expectedStatus: current.buildStatus,
|
|
70
|
+
runId,
|
|
71
|
+
runKind: STATUS === "verified_source_ready" ? "verification" : "build",
|
|
72
|
+
}),
|
|
73
|
+
},
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
const detail = await response.text();
|
|
78
|
+
console.error(`Rudder rejected the App handoff (${response.status}): ${detail.slice(0, 500)}`);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const app = await response.json();
|
|
83
|
+
console.log(`App Builder status: ${app.buildStatus}`);
|
|
@@ -134,8 +134,8 @@ Read only the reference needed for the request:
|
|
|
134
134
|
installed CLI fallback catalog plus exact command semantics.
|
|
135
135
|
3. [Agent creation](references/agent-creation.md) — permission-aware Agent
|
|
136
136
|
configuration, governed hiring, approval, revision, and evidence workflow.
|
|
137
|
-
4. [Plugin authoring](references/plugin-authoring.md) —
|
|
138
|
-
|
|
137
|
+
4. [Plugin authoring](references/plugin-authoring.md) — Codex-compatible
|
|
138
|
+
package layout, manifest, Skills, MCPs, Apps, and verification workflow.
|
|
139
139
|
5. [Work practices](references/operating-practices.md) — exact
|
|
140
140
|
conditional behavior for ownership, reviews, approvals, budgets,
|
|
141
141
|
workspaces, Library handoff, authentication, and safe git use.
|
|
@@ -258,5 +258,45 @@
|
|
|
258
258
|
"expected_public_path": "https://docs.rudderhq.dev/zh/reference/permissions-and-platforms",
|
|
259
259
|
"expected_anchor": "boundaries",
|
|
260
260
|
"illustrative_case_sufficient": false
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"query": "How does Rudder build, review, approve, and sign Windows Desktop releases?",
|
|
264
|
+
"locale": "en",
|
|
265
|
+
"query_mode": "current",
|
|
266
|
+
"expected_source_class": "official_public_docs_primary",
|
|
267
|
+
"required_contract_ids": [],
|
|
268
|
+
"expected_public_path": "https://docs.rudderhq.dev/reference/code-signing-policy",
|
|
269
|
+
"expected_anchor": null,
|
|
270
|
+
"illustrative_case_sufficient": false
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"query": "Rudder 如何构建、审查、批准并签名 Windows Desktop 发布产物?",
|
|
274
|
+
"locale": "zh",
|
|
275
|
+
"query_mode": "current",
|
|
276
|
+
"expected_source_class": "official_public_docs_primary",
|
|
277
|
+
"required_contract_ids": [],
|
|
278
|
+
"expected_public_path": "https://docs.rudderhq.dev/zh/reference/code-signing-policy",
|
|
279
|
+
"expected_anchor": null,
|
|
280
|
+
"illustrative_case_sufficient": false
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"query": "Which Rudder data stays local and which optional services process data?",
|
|
284
|
+
"locale": "en",
|
|
285
|
+
"query_mode": "current",
|
|
286
|
+
"expected_source_class": "official_public_docs_primary",
|
|
287
|
+
"required_contract_ids": ["ANALYTICS.TELEMETRY.001"],
|
|
288
|
+
"expected_public_path": "https://docs.rudderhq.dev/reference/privacy",
|
|
289
|
+
"expected_anchor": null,
|
|
290
|
+
"illustrative_case_sufficient": false
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"query": "哪些 Rudder 数据保留在本地,哪些可选服务会处理数据?",
|
|
294
|
+
"locale": "zh",
|
|
295
|
+
"query_mode": "current",
|
|
296
|
+
"expected_source_class": "official_public_docs_primary",
|
|
297
|
+
"required_contract_ids": ["ANALYTICS.TELEMETRY.001"],
|
|
298
|
+
"expected_public_path": "https://docs.rudderhq.dev/zh/reference/privacy",
|
|
299
|
+
"expected_anchor": null,
|
|
300
|
+
"illustrative_case_sufficient": false
|
|
261
301
|
}
|
|
262
302
|
]
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"should_trigger": true
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
"query": "
|
|
23
|
+
"query": "Create a Codex-compatible Rudder Plugin named quality-gate in a temporary directory with one Skill. Verify plugin.json and the current import boundary, then test the package.",
|
|
24
24
|
"should_trigger": true
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
|
-
"query": "Rudder Plugin 的
|
|
27
|
+
"query": "Rudder Plugin 的 Codex package、Skills、MCP、App、导入检查和运行权限现在有哪些边界?请查当前 authoring guide 和源码后回答。",
|
|
28
28
|
"should_trigger": true
|
|
29
29
|
},
|
|
30
30
|
{
|
|
@@ -246,8 +246,6 @@ or editing that URL by hand.
|
|
|
246
246
|
|
|
247
247
|
- `GET /api/approvals/:approvalId`
|
|
248
248
|
- `GET /api/approvals/:approvalId/issues`
|
|
249
|
-
- `GET /api/approvals/:approvalId/comments`
|
|
250
|
-
- `POST /api/approvals/:approvalId/comments`
|
|
251
249
|
- `POST /api/approvals/:approvalId/request-revision`
|
|
252
250
|
- `POST /api/approvals/:approvalId/resubmit`
|
|
253
251
|
- `POST /api/approvals/:approvalId/approve`
|
|
@@ -52,6 +52,11 @@ operating-practices guide for operating behavior:
|
|
|
52
52
|
| `rudder_agent_skills_create` | `rudder agent skills create [agent-id] --name <name> [--enable]` | Create an agent-private skill package under AGENT_HOME/skills. | yes | no | no | attached when available |
|
|
53
53
|
| `rudder_agent_skills_enable` | `rudder agent skills enable <agent-id> <selection-ref...>` | Add skill selections to an agent without replacing existing enabled skills. | yes | no | no | attached when available |
|
|
54
54
|
| `rudder_agent_skills_sync` | `rudder agent skills sync <agent-id>` | Sync the desired enabled skill set for an agent. | yes | no | no | attached when available |
|
|
55
|
+
| `rudder_goal_list` | `rudder goal list [--lifecycle <draft|active|closed|all>] [--focus <true|false>] [--facet <facet>] [--limit <n>]` | Discover Goals owned by the authenticated Agent; defaults to active Goals and returns current progress, next step, and attention state. | no | required | required | no |
|
|
56
|
+
| `rudder_goal_context` | `rudder goal context <goal-id>` | Read the owned Goal agreement and current operating context before acting: contract revision, criteria, boundaries, progress, next step, attention, proposals, and recent feedback. | no | no | required | no |
|
|
57
|
+
| `rudder_goal_progress` | `rudder goal progress <goal-id> --summary <text> --evidence-refs <json> --idempotency-key <key>` | Record evidence-backed progress for a Goal owned by the authenticated Agent and attribute it to the current Run. | yes | no | required | required |
|
|
58
|
+
| `rudder_goal_change_propose` | `rudder goal change propose <goal-id> --contract-revision <n> --after-contract <json> --rationale <text> --idempotency-key <key>` | Propose a reviewable change to the current Goal contract when evidence shows its outcome, criteria, boundaries, or deadlines should change. | yes | no | required | required |
|
|
59
|
+
| `rudder_goal_result_propose` | `rudder goal result propose <goal-id> --contract-revision <n> --criteria <json> --evidence-refs <json> --risk-summary <text> --idempotency-key <key>` | Submit an evidence-backed Goal result for mandatory human acceptance without closing the Goal. | yes | no | required | required |
|
|
55
60
|
| `rudder_issue_get` | `rudder issue get <issue>` | Read a full issue by UUID or identifier. | no | no | no | no |
|
|
56
61
|
| `rudder_issue_list` | `rudder issue list --org-id <id>` | List issues with optional status, assignee, and project filters without requiring a search query. | no | required | no | no |
|
|
57
62
|
| `rudder_issue_search` | `rudder issue search <query> [--org-id <id>]` | Search issues with the server-side issue index across title, identifier, description, and comments. | no | required | no | no |
|
|
@@ -64,7 +69,7 @@ operating-practices guide for operating behavior:
|
|
|
64
69
|
| `rudder_issue_review` | `rudder issue review <issue> --decision <decision> --comment-file <path>` | Record a structured reviewer decision with a required comment. | yes | no | no | attached when available |
|
|
65
70
|
| `rudder_issue_commit` | `rudder issue commit <issue> --sha <sha> --message <subject>` | Report a code commit created during issue work as structured issue activity. | yes | no | no | attached when available |
|
|
66
71
|
| `rudder_issue_done` | `rudder issue done <issue> --comment-file <path> [--image <path>]` | Mark an issue done with a required completion comment, optionally uploading images. | yes | no | no | attached when available |
|
|
67
|
-
| `rudder_issue_block` | `rudder issue block <issue> --comment-file <path> [--image <path>]` |
|
|
72
|
+
| `rudder_issue_block` | `rudder issue block <issue> --comment-file <path> [--image <path>]` | Request human assistance after bounded recovery attempts; repeated matching claims are audited before the Issue becomes blocked. | yes | no | no | attached when available |
|
|
68
73
|
| `rudder_project_list` | `rudder project list --org-id <id>` | List projects in an organization. | no | required | no | no |
|
|
69
74
|
| `rudder_project_get` | `rudder project get <project-id-or-shortname> [--org-id <id>]` | Read one project by ID or shortname. | no | no | no | no |
|
|
70
75
|
| `rudder_project_create` | `rudder project create --org-id <id> --name <name>` | Create a project in the organization. | yes | required | no | attached when available |
|
|
@@ -147,7 +152,7 @@ Operating rules live in [ownership, checkout, and wake scope](operating-practice
|
|
|
147
152
|
|
|
148
153
|
- progress: `rudder issue comment <issue> --body-file <path> [--image <path>]`
|
|
149
154
|
- done: `rudder issue done <issue> --comment-file <path> [--image <path>]`
|
|
150
|
-
-
|
|
155
|
+
- assistance/block audit: `rudder issue block <issue> --comment-file <path> [--image <path>]`
|
|
151
156
|
|
|
152
157
|
Issue comment and close-out commands accept comment bodies only from files or stdin. For multiline Markdown, command names, code spans, code blocks, test summaries, or screenshot evidence, pass `--body-file <path>` or `--comment-file <path>`, or pass `-` to read the body from stdin.
|
|
153
158
|
|
|
@@ -83,12 +83,16 @@ because work is executable, durable, long-running, or reviewable.
|
|
|
83
83
|
## Review And Close-Out
|
|
84
84
|
|
|
85
85
|
Use the close-out signal matching the outcome: a progress comment when work
|
|
86
|
-
remains, done with completion evidence,
|
|
87
|
-
explicit handoff comment with an ownership change.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
remains, done with completion evidence, a blocker claim after bounded recovery,
|
|
87
|
+
or an explicit handoff comment with an ownership change.
|
|
88
|
+
|
|
89
|
+
Complete the real task. If an action fails, investigate and try a bounded,
|
|
90
|
+
materially different recovery path before requesting human help. A blocker
|
|
91
|
+
claim must identify the blocker and exact human input or action required.
|
|
92
|
+
Rudder records the Assistance Request and audits the same blocker across
|
|
93
|
+
separate execution Runs; the first claim does not directly establish a blocked
|
|
94
|
+
Issue. Do not repeat a failed action inside one Run merely to increase the
|
|
95
|
+
audit count, and do not present partial work as complete.
|
|
92
96
|
|
|
93
97
|
A reviewer does not take over implementation unless explicitly asked. Ordinary
|
|
94
98
|
explicit reviewer work may happen in any issue status while preserving
|