@flowdular/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai/agents/README.md +27 -0
- package/.ai/agents/module-executor.md +36 -0
- package/.ai/agents/reviewer.md +23 -0
- package/.ai/agents/sandbox/agentic-engineer.md +31 -0
- package/.ai/agents/sandbox/backend-engineer.md +36 -0
- package/.ai/agents/sandbox/business-manager.md +23 -0
- package/.ai/agents/sandbox/frontend-engineer.md +27 -0
- package/.ai/agents/sandbox/ux-designer.md +23 -0
- package/.ai/agents/spec-author.md +29 -0
- package/.ai/blueprints/add-migration/README.md +5 -0
- package/.ai/blueprints/add-migration/allowed-paths.yaml +23 -0
- package/.ai/blueprints/add-migration/blueprint.json +14 -0
- package/.ai/blueprints/add-migration/examples/invalid/input-destructive.json +6 -0
- package/.ai/blueprints/add-migration/examples/invalid/plan-unnumbered-file.json +9 -0
- package/.ai/blueprints/add-migration/examples/valid/input.json +6 -0
- package/.ai/blueprints/add-migration/examples/valid/plan.json +9 -0
- package/.ai/blueprints/add-migration/gates.yaml +30 -0
- package/.ai/blueprints/add-migration/input.schema.json +23 -0
- package/.ai/blueprints/add-migration/plan.schema.json +54 -0
- package/.ai/blueprints/add-migration/required-files.yaml +18 -0
- package/.ai/blueprints/add-migration/spec-requirements.yaml +13 -0
- package/.ai/blueprints/add-migration/steps.yaml +62 -0
- package/.ai/blueprints/author-spec/README.md +5 -0
- package/.ai/blueprints/author-spec/allowed-paths.yaml +7 -0
- package/.ai/blueprints/author-spec/blueprint.json +14 -0
- package/.ai/blueprints/author-spec/examples/invalid/input-missing-outcome.json +5 -0
- package/.ai/blueprints/author-spec/examples/valid/input.json +6 -0
- package/.ai/blueprints/author-spec/gates.yaml +13 -0
- package/.ai/blueprints/author-spec/input.schema.json +20 -0
- package/.ai/blueprints/author-spec/plan.schema.json +14 -0
- package/.ai/blueprints/author-spec/required-files.yaml +6 -0
- package/.ai/blueprints/author-spec/spec-requirements.yaml +35 -0
- package/.ai/blueprints/author-spec/steps.yaml +28 -0
- package/.ai/blueprints/author-spec/templates/module.yaml +45 -0
- package/.ai/blueprints/bug-fix/README.md +5 -0
- package/.ai/blueprints/bug-fix/allowed-paths.yaml +29 -0
- package/.ai/blueprints/bug-fix/blueprint.json +14 -0
- package/.ai/blueprints/bug-fix/examples/invalid/input-no-symptom.json +4 -0
- package/.ai/blueprints/bug-fix/examples/invalid/plan-no-test.json +8 -0
- package/.ai/blueprints/bug-fix/examples/valid/input.json +6 -0
- package/.ai/blueprints/bug-fix/examples/valid/plan.json +8 -0
- package/.ai/blueprints/bug-fix/gates.yaml +30 -0
- package/.ai/blueprints/bug-fix/input.schema.json +25 -0
- package/.ai/blueprints/bug-fix/plan.schema.json +53 -0
- package/.ai/blueprints/bug-fix/required-files.yaml +7 -0
- package/.ai/blueprints/bug-fix/spec-requirements.yaml +7 -0
- package/.ai/blueprints/bug-fix/steps.yaml +51 -0
- package/.ai/blueprints/core-extend/README.md +5 -0
- package/.ai/blueprints/core-extend/allowed-paths.yaml +49 -0
- package/.ai/blueprints/core-extend/blueprint.json +14 -0
- package/.ai/blueprints/core-extend/examples/invalid/input-unknown-package.json +5 -0
- package/.ai/blueprints/core-extend/examples/invalid/plan-missing-gates.json +7 -0
- package/.ai/blueprints/core-extend/examples/valid/input.json +6 -0
- package/.ai/blueprints/core-extend/examples/valid/plan.json +10 -0
- package/.ai/blueprints/core-extend/gates.yaml +16 -0
- package/.ai/blueprints/core-extend/input.schema.json +54 -0
- package/.ai/blueprints/core-extend/plan.schema.json +39 -0
- package/.ai/blueprints/core-extend/required-files.yaml +36 -0
- package/.ai/blueprints/core-extend/spec-requirements.yaml +17 -0
- package/.ai/blueprints/core-extend/steps.yaml +54 -0
- package/.ai/blueprints/edit-module/README.md +9 -0
- package/.ai/blueprints/edit-module/allowed-paths.yaml +27 -0
- package/.ai/blueprints/edit-module/blueprint.json +20 -0
- package/.ai/blueprints/edit-module/examples/invalid/input-unknown-change.json +5 -0
- package/.ai/blueprints/edit-module/examples/invalid/plan-touches-platform.json +15 -0
- package/.ai/blueprints/edit-module/examples/valid/input.json +5 -0
- package/.ai/blueprints/edit-module/examples/valid/plan.json +25 -0
- package/.ai/blueprints/edit-module/gates.yaml +30 -0
- package/.ai/blueprints/edit-module/input.schema.json +31 -0
- package/.ai/blueprints/edit-module/plan.schema.json +65 -0
- package/.ai/blueprints/edit-module/required-files.yaml +80 -0
- package/.ai/blueprints/edit-module/spec-requirements.yaml +15 -0
- package/.ai/blueprints/edit-module/steps.yaml +115 -0
- package/.ai/blueprints/new-module/README.md +7 -0
- package/.ai/blueprints/new-module/allowed-paths.yaml +27 -0
- package/.ai/blueprints/new-module/blueprint.json +20 -0
- package/.ai/blueprints/new-module/examples/invalid/input-spec-outside-modules.json +4 -0
- package/.ai/blueprints/new-module/examples/invalid/plan-unknown-gate.json +8 -0
- package/.ai/blueprints/new-module/examples/valid/input.json +5 -0
- package/.ai/blueprints/new-module/examples/valid/plan.json +22 -0
- package/.ai/blueprints/new-module/gates.yaml +30 -0
- package/.ai/blueprints/new-module/input.schema.json +21 -0
- package/.ai/blueprints/new-module/plan.schema.json +58 -0
- package/.ai/blueprints/new-module/required-files.yaml +73 -0
- package/.ai/blueprints/new-module/spec-requirements.yaml +30 -0
- package/.ai/blueprints/new-module/steps.yaml +138 -0
- package/.ai/blueprints/release/README.md +5 -0
- package/.ai/blueprints/release/allowed-paths.yaml +19 -0
- package/.ai/blueprints/release/blueprint.json +14 -0
- package/.ai/blueprints/release/examples/invalid/input-bad-version.json +4 -0
- package/.ai/blueprints/release/examples/invalid/plan-bad-branch.json +7 -0
- package/.ai/blueprints/release/examples/valid/input.json +5 -0
- package/.ai/blueprints/release/examples/valid/plan.json +20 -0
- package/.ai/blueprints/release/gates.yaml +20 -0
- package/.ai/blueprints/release/input.schema.json +24 -0
- package/.ai/blueprints/release/plan.schema.json +46 -0
- package/.ai/blueprints/release/required-files.yaml +19 -0
- package/.ai/blueprints/release/spec-requirements.yaml +8 -0
- package/.ai/blueprints/release/steps.yaml +47 -0
- package/.ai/blueprints/security-review/README.md +5 -0
- package/.ai/blueprints/security-review/allowed-paths.yaml +6 -0
- package/.ai/blueprints/security-review/blueprint.json +14 -0
- package/.ai/blueprints/security-review/examples/invalid/input-unknown-kind.json +4 -0
- package/.ai/blueprints/security-review/examples/invalid/plan-finding-without-scenario.json +14 -0
- package/.ai/blueprints/security-review/examples/valid/input.json +4 -0
- package/.ai/blueprints/security-review/examples/valid/plan.json +19 -0
- package/.ai/blueprints/security-review/gates.yaml +22 -0
- package/.ai/blueprints/security-review/input.schema.json +20 -0
- package/.ai/blueprints/security-review/plan.schema.json +65 -0
- package/.ai/blueprints/security-review/required-files.yaml +6 -0
- package/.ai/blueprints/security-review/spec-requirements.yaml +9 -0
- package/.ai/blueprints/security-review/steps.yaml +38 -0
- package/.ai/policies/capabilities.yaml +164 -0
- package/.ai/policies/model-routing.yaml +72 -0
- package/.ai/policies/path-ownership.yaml +65 -0
- package/.ai/policies/task-budgets.yaml +37 -0
- package/.ai/references/catalog/LICENSE +21 -0
- package/.ai/references/catalog/migrations/0001_catalog_core.down.sql +2 -0
- package/.ai/references/catalog/migrations/0001_catalog_core.up.sql +21 -0
- package/.ai/references/catalog/migrations/0002_catalog_history.down.sql +3 -0
- package/.ai/references/catalog/migrations/0002_catalog_history.up.sql +20 -0
- package/.ai/references/catalog/migrations/0003_catalog_history_service_actors.down.sql +3 -0
- package/.ai/references/catalog/migrations/0003_catalog_history_service_actors.up.sql +36 -0
- package/.ai/references/catalog/migrations/0004_catalog_idempotency_ledger.down.sql +3 -0
- package/.ai/references/catalog/migrations/0004_catalog_idempotency_ledger.up.sql +19 -0
- package/.ai/references/catalog/migrations/README.md +3 -0
- package/.ai/references/catalog/module.json +27 -0
- package/.ai/references/catalog/package.json +49 -0
- package/.ai/references/catalog/spec/module.yaml +86 -0
- package/.ai/references/catalog/src/acl/permissions.ts +6 -0
- package/.ai/references/catalog/src/agent/tools.ts +164 -0
- package/.ai/references/catalog/src/api/endpoints.ts +243 -0
- package/.ai/references/catalog/src/client/CatalogHistoryDrawer.tsrx +123 -0
- package/.ai/references/catalog/src/client/CatalogItemForm.tsrx +190 -0
- package/.ai/references/catalog/src/client/CatalogView.tsrx +473 -0
- package/.ai/references/catalog/src/client/api.ts +111 -0
- package/.ai/references/catalog/src/client/contribution.tsrx +61 -0
- package/.ai/references/catalog/src/client/index.ts +18 -0
- package/.ai/references/catalog/src/client/navigation-copy.ts +9 -0
- package/.ai/references/catalog/src/client/state.ts +24 -0
- package/.ai/references/catalog/src/domain/types.ts +32 -0
- package/.ai/references/catalog/src/domain/variables.ts +111 -0
- package/.ai/references/catalog/src/index.ts +31 -0
- package/.ai/references/catalog/src/platform.ts +35 -0
- package/.ai/references/catalog/src/server/index.ts +4 -0
- package/.ai/references/catalog/src/server/runtime.ts +86 -0
- package/.ai/references/catalog/src/services/catalog-service.ts +306 -0
- package/.ai/references/catalog/src/services/database-repository.ts +440 -0
- package/.ai/references/catalog/src/services/index.ts +4 -0
- package/.ai/references/catalog/src/services/migration.ts +171 -0
- package/.ai/references/catalog/src/services/repository.ts +36 -0
- package/.ai/references/catalog/src/services/target-idempotency.ts +59 -0
- package/.ai/references/catalog/tests/agent-tools.test.ts +277 -0
- package/.ai/references/catalog/tests/endpoints.test.ts +320 -0
- package/.ai/references/catalog/tests/idempotency.test.ts +297 -0
- package/.ai/references/catalog/tests/migrations.test.ts +149 -0
- package/.ai/references/catalog/tests/module.test.ts +271 -0
- package/.ai/references/catalog/tests/support/database.ts +76 -0
- package/.ai/references/catalog/translations/en.json +101 -0
- package/.ai/references/catalog/translations/pl.json +101 -0
- package/.ai/references/catalog/tsconfig.json +15 -0
- package/.ai/references/catalog/vitest.config.ts +16 -0
- package/.ai/references/catalog.provenance.json +55 -0
- package/.ai/skills/README.md +36 -0
- package/.ai/skills/agent-tool-design/SKILL.md +209 -0
- package/.ai/skills/auth-security-review/SKILL.md +96 -0
- package/.ai/skills/auto-review/SKILL.md +112 -0
- package/.ai/skills/bug-hunt/SKILL.md +110 -0
- package/.ai/skills/business-agent-design/SKILL.md +188 -0
- package/.ai/skills/cli-extension/SKILL.md +114 -0
- package/.ai/skills/core-extend/SKILL.md +104 -0
- package/.ai/skills/database-adapter/SKILL.md +204 -0
- package/.ai/skills/database-adapter/references/first-run-and-matrix.md +105 -0
- package/.ai/skills/migration-authoring/SKILL.md +167 -0
- package/.ai/skills/module-new/SKILL.md +180 -0
- package/.ai/skills/module-update/SKILL.md +100 -0
- package/.ai/skills/perf-audit/SKILL.md +105 -0
- package/.ai/skills/release-eject-pr/SKILL.md +113 -0
- package/.ai/skills/spec-approval/SKILL.md +112 -0
- package/.ai/skills/test-hardening/SKILL.md +86 -0
- package/.ai/skills/translations-i18n/SKILL.md +85 -0
- package/.ai/skills/ux-design/SKILL.md +97 -0
- package/.ai/skills/variables/SKILL.md +164 -0
- package/.ai/skills/workflow-development/SKILL.md +199 -0
- package/AGENTS.md +59 -0
- package/LICENSE +21 -0
- package/README.md +24 -0
- package/docs/agent-contract.md +45 -0
- package/docs/design-system.md +217 -0
- package/modules/agents/migrations/0001_agents_core.down.sql +4 -0
- package/modules/agents/migrations/0001_agents_core.up.sql +106 -0
- package/modules/agents/migrations/0002_provider_connections.down.sql +1 -0
- package/modules/agents/migrations/0002_provider_connections.up.sql +34 -0
- package/modules/agents/migrations/0003_resource_audit.down.sql +1 -0
- package/modules/agents/migrations/0003_resource_audit.up.sql +25 -0
- package/modules/agents/migrations/0004_run_grants.down.sql +1 -0
- package/modules/agents/migrations/0004_run_grants.up.sql +19 -0
- package/modules/agents/migrations/0005_long_running_limits.down.sql +2 -0
- package/modules/agents/migrations/0005_long_running_limits.up.sql +14 -0
- package/modules/agents/migrations/0006_agent_skills.down.sql +3 -0
- package/modules/agents/migrations/0006_agent_skills.up.sql +44 -0
- package/modules/agents/migrations/0007_model_readiness.down.sql +1 -0
- package/modules/agents/migrations/0007_model_readiness.up.sql +18 -0
- package/modules/agents/migrations/0008_output_limits.down.sql +2 -0
- package/modules/agents/migrations/0008_output_limits.up.sql +8 -0
- package/modules/agents/migrations/0009_agent_audit_v3.down.sql +1 -0
- package/modules/agents/migrations/0009_agent_audit_v3.up.sql +25 -0
- package/modules/agents/migrations/0012_agent_run_costs.down.sql +3 -0
- package/modules/agents/migrations/0012_agent_run_costs.up.sql +32 -0
- package/modules/agents/migrations/0013_workflow_prerequisites.down.sql +3 -0
- package/modules/agents/migrations/0013_workflow_prerequisites.up.sql +97 -0
- package/modules/agents/migrations/0014_agent_action_audit.down.sql +1 -0
- package/modules/agents/migrations/0014_agent_action_audit.up.sql +25 -0
- package/modules/agents/migrations/0015_agent_run_actors.down.sql +1 -0
- package/modules/agents/migrations/0015_agent_run_actors.up.sql +17 -0
- package/modules/agents/migrations/0016_module_owned_agents.down.sql +6 -0
- package/modules/agents/migrations/0016_module_owned_agents.up.sql +68 -0
- package/modules/agents/migrations/0017_agent_authorization_subjects.down.sql +2 -0
- package/modules/agents/migrations/0017_agent_authorization_subjects.up.sql +18 -0
- package/modules/agents/migrations/0018_agent_child_tenant_isolation.down.sql +12 -0
- package/modules/agents/migrations/0018_agent_child_tenant_isolation.up.sql +88 -0
- package/modules/agents/migrations/0019_background_recovery_grants.down.sql +6 -0
- package/modules/agents/migrations/0019_background_recovery_grants.up.sql +17 -0
- package/modules/agents/migrations/0020_provider_summary_role.down.sql +2 -0
- package/modules/agents/migrations/0020_provider_summary_role.up.sql +17 -0
- package/modules/agents/migrations/0021_agents_agent_reconciliation_role.down.sql +4 -0
- package/modules/agents/migrations/0021_agents_agent_reconciliation_role.up.sql +7 -0
- package/modules/agents/migrations/README.md +39 -0
- package/modules/agents/module.json +38 -0
- package/modules/agents/package.json +56 -0
- package/modules/agents/spec/module.yaml +271 -0
- package/modules/agents/spec/procedures-compatibility.md +63 -0
- package/modules/agents/src/acl/permissions.ts +13 -0
- package/modules/agents/src/api/endpoints.ts +1122 -0
- package/modules/agents/src/cli/commands.json +29 -0
- package/modules/agents/src/cli/index.ts +162 -0
- package/modules/agents/src/client/AgentDashboardWidget.tsrx +32 -0
- package/modules/agents/src/client/AgentDefinitionForm.tsrx +362 -0
- package/modules/agents/src/client/AgentDefinitionList.tsrx +127 -0
- package/modules/agents/src/client/AgentPlaygroundView.tsrx +246 -0
- package/modules/agents/src/client/AgentProcedureForm.tsrx +182 -0
- package/modules/agents/src/client/AgentProcedureList.tsrx +118 -0
- package/modules/agents/src/client/AgentProceduresView.tsrx +253 -0
- package/modules/agents/src/client/AgentProvidersView.tsrx +248 -0
- package/modules/agents/src/client/AgentRunsView.tsrx +304 -0
- package/modules/agents/src/client/AgentUsageView.tsrx +233 -0
- package/modules/agents/src/client/AgentsView.tsrx +339 -0
- package/modules/agents/src/client/ModuleAgentBindingForm.tsrx +239 -0
- package/modules/agents/src/client/ModuleAgentList.tsrx +122 -0
- package/modules/agents/src/client/ProviderConnectionForm.tsrx +273 -0
- package/modules/agents/src/client/ProviderConnectionList.tsrx +229 -0
- package/modules/agents/src/client/ProviderModelEditor.tsrx +313 -0
- package/modules/agents/src/client/RunTimeline.tsrx +212 -0
- package/modules/agents/src/client/agents.css +349 -0
- package/modules/agents/src/client/api.ts +373 -0
- package/modules/agents/src/client/contribution.tsrx +181 -0
- package/modules/agents/src/client/index.ts +21 -0
- package/modules/agents/src/client/presentation.ts +162 -0
- package/modules/agents/src/client/state.ts +100 -0
- package/modules/agents/src/domain/context-variables.ts +58 -0
- package/modules/agents/src/domain/run-timeline.ts +145 -0
- package/modules/agents/src/domain/types.ts +481 -0
- package/modules/agents/src/index.ts +88 -0
- package/modules/agents/src/platform.ts +82 -0
- package/modules/agents/src/server/action-execution.ts +811 -0
- package/modules/agents/src/server/define-agent.ts +170 -0
- package/modules/agents/src/server/index.ts +67 -0
- package/modules/agents/src/server/run-execution.ts +231 -0
- package/modules/agents/src/server/run-queue.ts +96 -0
- package/modules/agents/src/server/runtime.ts +448 -0
- package/modules/agents/src/server/tools.ts +18 -0
- package/modules/agents/src/services/agent-service.ts +2167 -0
- package/modules/agents/src/services/credential-vault.ts +133 -0
- package/modules/agents/src/services/database-repository.ts +2786 -0
- package/modules/agents/src/services/index.ts +33 -0
- package/modules/agents/src/services/migration.ts +1152 -0
- package/modules/agents/src/services/module-agent-preflight.ts +76 -0
- package/modules/agents/src/services/outbound-policy.ts +136 -0
- package/modules/agents/src/services/provider-broker.ts +80 -0
- package/modules/agents/src/services/provider-repository.ts +589 -0
- package/modules/agents/src/services/provider-service.ts +968 -0
- package/modules/agents/src/services/repository.ts +294 -0
- package/modules/agents/src/services/run-grant.ts +305 -0
- package/modules/agents/src/services/usage-service.ts +119 -0
- package/modules/agents/src/services/worker.ts +442 -0
- package/modules/agents/src/settings.ts +244 -0
- package/modules/agents/translations/en.json +403 -0
- package/modules/agents/translations/pl.json +403 -0
- package/modules/auth/README.md +215 -0
- package/modules/auth/migrations/0001_auth_core.up.sql +108 -0
- package/modules/auth/migrations/0002_bundled_module_scopes.up.sql +26 -0
- package/modules/auth/migrations/0003_agent_core_scopes.up.sql +12 -0
- package/modules/auth/migrations/0004_owner_only_development_scopes.up.sql +8 -0
- package/modules/auth/migrations/0005_agent_provider_scopes.up.sql +13 -0
- package/modules/auth/migrations/0006_tenant_slug.up.sql +6 -0
- package/modules/auth/migrations/0007_sandbox_scopes.up.sql +13 -0
- package/modules/auth/migrations/0008_api_tokens.up.sql +43 -0
- package/modules/auth/migrations/0009_module_settings.up.sql +24 -0
- package/modules/auth/migrations/0010_sign_in_lockout.up.sql +11 -0
- package/modules/auth/migrations/0011_session_ids_and_password_reset.up.sql +7 -0
- package/modules/auth/migrations/0012_roles.up.sql +31 -0
- package/modules/auth/migrations/0013_audit.up.sql +27 -0
- package/modules/auth/migrations/0014_audit_actor.up.sql +4 -0
- package/modules/auth/migrations/0015_account_security.up.sql +81 -0
- package/modules/auth/module.json +26 -0
- package/modules/auth/package.json +61 -0
- package/modules/auth/spec/module.yaml +190 -0
- package/modules/auth/src/acl/scopes.ts +86 -0
- package/modules/auth/src/api/attempt-limiter.ts +42 -0
- package/modules/auth/src/api/client-address.ts +14 -0
- package/modules/auth/src/api/cookies.ts +52 -0
- package/modules/auth/src/api/origin.ts +40 -0
- package/modules/auth/src/cli/commands.json +74 -0
- package/modules/auth/src/cli/database.ts +51 -0
- package/modules/auth/src/cli/greenfield.ts +173 -0
- package/modules/auth/src/cli/index.ts +184 -0
- package/modules/auth/src/cli/provisioning.ts +211 -0
- package/modules/auth/src/client/AuthBackdrop.tsrx +137 -0
- package/modules/auth/src/client/AuthenticationCore.tsrx +630 -0
- package/modules/auth/src/client/PasswordChangeRequired.tsrx +145 -0
- package/modules/auth/src/client/PublicAuthFlows.tsrx +379 -0
- package/modules/auth/src/client/api.ts +464 -0
- package/modules/auth/src/client/audit/AuditView.tsrx +357 -0
- package/modules/auth/src/client/audit/api.ts +164 -0
- package/modules/auth/src/client/audit/audit-columns.tsrx +47 -0
- package/modules/auth/src/client/audit/audit-row.ts +38 -0
- package/modules/auth/src/client/auth.css +483 -0
- package/modules/auth/src/client/contribution.tsrx +100 -0
- package/modules/auth/src/client/index.ts +32 -0
- package/modules/auth/src/client/security/SecurityView.tsrx +253 -0
- package/modules/auth/src/client/settings/PreferencesCard.tsrx +65 -0
- package/modules/auth/src/client/settings/SettingsView.tsrx +212 -0
- package/modules/auth/src/client/settings/WorkspaceCard.tsrx +59 -0
- package/modules/auth/src/client/settings/api.ts +115 -0
- package/modules/auth/src/client/slug.ts +26 -0
- package/modules/auth/src/client/state.ts +115 -0
- package/modules/auth/src/client/tokens/ApiTokenForm.tsrx +153 -0
- package/modules/auth/src/client/tokens/ApiTokenSecret.tsrx +35 -0
- package/modules/auth/src/client/tokens/ApiTokensView.tsrx +216 -0
- package/modules/auth/src/client/tokens/api.ts +59 -0
- package/modules/auth/src/client/tokens/state.ts +26 -0
- package/modules/auth/src/client/tokens/token-columns.tsrx +64 -0
- package/modules/auth/src/client/translations.ts +23 -0
- package/modules/auth/src/domain/types.ts +152 -0
- package/modules/auth/src/index.ts +42 -0
- package/modules/auth/src/middleware/authentication.ts +97 -0
- package/modules/auth/src/platform.ts +0 -0
- package/modules/auth/src/server/actor.ts +12 -0
- package/modules/auth/src/server/audit-endpoints.ts +51 -0
- package/modules/auth/src/server/composition.ts +9 -0
- package/modules/auth/src/server/endpoints.ts +893 -0
- package/modules/auth/src/server/http.ts +153 -0
- package/modules/auth/src/server/index.ts +37 -0
- package/modules/auth/src/server/roles-endpoints.ts +120 -0
- package/modules/auth/src/server/runtime.ts +705 -0
- package/modules/auth/src/server/session-endpoints.ts +86 -0
- package/modules/auth/src/server/session-security.ts +62 -0
- package/modules/auth/src/server/token-endpoints.ts +106 -0
- package/modules/auth/src/services/auth-service-error.ts +11 -0
- package/modules/auth/src/services/auth-service.ts +2309 -0
- package/modules/auth/src/services/database-repository.ts +1825 -0
- package/modules/auth/src/services/mail-delivery.ts +27 -0
- package/modules/auth/src/services/migration.ts +591 -0
- package/modules/auth/src/services/password.ts +115 -0
- package/modules/auth/src/services/repository.ts +395 -0
- package/modules/auth/src/services/settings-store.ts +92 -0
- package/modules/auth/src/services/totp.ts +135 -0
- package/modules/auth/src/services/validation.ts +186 -0
- package/modules/auth/src/settings.ts +150 -0
- package/modules/auth/translations/en.json +263 -0
- package/modules/auth/translations/pl.json +263 -0
- package/modules/automations/migrations/0001_automations_core.down.sql +10 -0
- package/modules/automations/migrations/0001_automations_core.up.sql +76 -0
- package/modules/automations/migrations/0002_automations_targets.down.sql +9 -0
- package/modules/automations/migrations/0002_automations_targets.up.sql +37 -0
- package/modules/automations/migrations/0003_automations_scheduler_role.down.sql +3 -0
- package/modules/automations/migrations/0003_automations_scheduler_role.up.sql +19 -0
- package/modules/automations/migrations/0004_automations_trigger_routing_role.down.sql +3 -0
- package/modules/automations/migrations/0004_automations_trigger_routing_role.up.sql +18 -0
- package/modules/automations/migrations/README.md +3 -0
- package/modules/automations/module.json +31 -0
- package/modules/automations/package.json +55 -0
- package/modules/automations/spec/module.yaml +93 -0
- package/modules/automations/src/acl/permissions.ts +10 -0
- package/modules/automations/src/api/endpoints.ts +480 -0
- package/modules/automations/src/client/AutomationScheduleForm.tsrx +218 -0
- package/modules/automations/src/client/AutomationSchedulesView.tsrx +339 -0
- package/modules/automations/src/client/AutomationTriggerForm.tsrx +190 -0
- package/modules/automations/src/client/AutomationTriggersView.tsrx +329 -0
- package/modules/automations/src/client/api.ts +148 -0
- package/modules/automations/src/client/contribution.tsrx +70 -0
- package/modules/automations/src/client/index.ts +20 -0
- package/modules/automations/src/client/presentation.ts +38 -0
- package/modules/automations/src/client/state.ts +40 -0
- package/modules/automations/src/client/target-selection.ts +44 -0
- package/modules/automations/src/domain/cadence.ts +44 -0
- package/modules/automations/src/domain/types.ts +110 -0
- package/modules/automations/src/domain/variables.ts +178 -0
- package/modules/automations/src/index.ts +39 -0
- package/modules/automations/src/platform.ts +73 -0
- package/modules/automations/src/server/execution.ts +77 -0
- package/modules/automations/src/server/index.ts +39 -0
- package/modules/automations/src/server/runtime.ts +218 -0
- package/modules/automations/src/server/targets.ts +116 -0
- package/modules/automations/src/services/automations-service.ts +10 -0
- package/modules/automations/src/services/database-repository.ts +763 -0
- package/modules/automations/src/services/index.ts +5 -0
- package/modules/automations/src/services/migration.ts +223 -0
- package/modules/automations/src/services/repository.ts +119 -0
- package/modules/automations/src/services/schedule-service.ts +837 -0
- package/modules/automations/src/services/secret-vault.ts +124 -0
- package/modules/automations/src/services/trigger-service.ts +648 -0
- package/modules/automations/src/settings.ts +69 -0
- package/modules/automations/translations/en.json +126 -0
- package/modules/automations/translations/pl.json +126 -0
- package/modules/automations-workflows-integration/module.json +27 -0
- package/modules/automations-workflows-integration/package.json +48 -0
- package/modules/automations-workflows-integration/spec/module.yaml +93 -0
- package/modules/automations-workflows-integration/src/index.ts +14 -0
- package/modules/automations-workflows-integration/src/platform.ts +24 -0
- package/modules/automations-workflows-integration/src/server/adapter.ts +272 -0
- package/modules/automations-workflows-integration/src/server/index.ts +11 -0
- package/modules/automations-workflows-integration/src/server/tools.ts +0 -0
- package/modules/automations-workflows-integration/translations/en.json +21 -0
- package/modules/automations-workflows-integration/translations/pl.json +21 -0
- package/modules/profile/migrations/0001_profile_core.down.sql +1 -0
- package/modules/profile/migrations/0001_profile_core.up.sql +13 -0
- package/modules/profile/migrations/0002_profile_language.down.sql +1 -0
- package/modules/profile/migrations/0002_profile_language.up.sql +12 -0
- package/modules/profile/migrations/README.md +3 -0
- package/modules/profile/module.json +23 -0
- package/modules/profile/package.json +55 -0
- package/modules/profile/spec/module.yaml +136 -0
- package/modules/profile/src/acl/permissions.ts +5 -0
- package/modules/profile/src/api/endpoints.ts +184 -0
- package/modules/profile/src/client/DisplayNameCard.tsrx +59 -0
- package/modules/profile/src/client/LanguageCard.tsrx +89 -0
- package/modules/profile/src/client/PasswordCard.tsrx +79 -0
- package/modules/profile/src/client/ProfileView.tsrx +192 -0
- package/modules/profile/src/client/SessionsCard.tsrx +158 -0
- package/modules/profile/src/client/api.ts +134 -0
- package/modules/profile/src/client/contribution.tsrx +61 -0
- package/modules/profile/src/client/index.ts +15 -0
- package/modules/profile/src/client/password.ts +41 -0
- package/modules/profile/src/client/sessions-api.ts +52 -0
- package/modules/profile/src/client/state.ts +23 -0
- package/modules/profile/src/domain/types.ts +21 -0
- package/modules/profile/src/index.ts +21 -0
- package/modules/profile/src/platform.ts +23 -0
- package/modules/profile/src/server/index.ts +7 -0
- package/modules/profile/src/server/runtime.ts +84 -0
- package/modules/profile/src/services/database-repository.ts +154 -0
- package/modules/profile/src/services/index.ts +6 -0
- package/modules/profile/src/services/migration.ts +58 -0
- package/modules/profile/src/services/profile-service.ts +114 -0
- package/modules/profile/src/services/repository.ts +13 -0
- package/modules/profile/translations/en.json +58 -0
- package/modules/profile/translations/pl.json +58 -0
- package/modules/sandbox/migrations/0001_sandbox_core.down.sql +6 -0
- package/modules/sandbox/migrations/0001_sandbox_core.up.sql +70 -0
- package/modules/sandbox/migrations/0002_sandbox_session_lifecycle.down.sql +36 -0
- package/modules/sandbox/migrations/0002_sandbox_session_lifecycle.up.sql +37 -0
- package/modules/sandbox/migrations/README.md +7 -0
- package/modules/sandbox/module.json +31 -0
- package/modules/sandbox/package.json +56 -0
- package/modules/sandbox/spec/module.yaml +111 -0
- package/modules/sandbox/src/acl/permissions.ts +18 -0
- package/modules/sandbox/src/api/endpoints.ts +439 -0
- package/modules/sandbox/src/cli/commands.json +84 -0
- package/modules/sandbox/src/cli/index.ts +450 -0
- package/modules/sandbox/src/client/SandboxAccessView.tsrx +191 -0
- package/modules/sandbox/src/client/SandboxGrantForm.tsrx +134 -0
- package/modules/sandbox/src/client/SandboxGrantList.tsrx +83 -0
- package/modules/sandbox/src/client/SandboxSessionList.tsrx +56 -0
- package/modules/sandbox/src/client/api.ts +87 -0
- package/modules/sandbox/src/client/contribution.tsrx +47 -0
- package/modules/sandbox/src/client/index.ts +18 -0
- package/modules/sandbox/src/client/presentation.ts +47 -0
- package/modules/sandbox/src/client/state.ts +20 -0
- package/modules/sandbox/src/domain/types.ts +125 -0
- package/modules/sandbox/src/index.ts +33 -0
- package/modules/sandbox/src/platform.ts +28 -0
- package/modules/sandbox/src/server/index.ts +20 -0
- package/modules/sandbox/src/server/runtime.ts +119 -0
- package/modules/sandbox/src/services/database-repository.ts +567 -0
- package/modules/sandbox/src/services/directory.ts +33 -0
- package/modules/sandbox/src/services/index.ts +19 -0
- package/modules/sandbox/src/services/migration.ts +145 -0
- package/modules/sandbox/src/services/repository.ts +55 -0
- package/modules/sandbox/src/services/sandbox-service-error.ts +10 -0
- package/modules/sandbox/src/services/sandbox-service.ts +533 -0
- package/modules/sandbox/translations/en.json +77 -0
- package/modules/sandbox/translations/pl.json +77 -0
- package/modules/system/module.json +18 -0
- package/modules/system/package.json +56 -0
- package/modules/system/spec/module.yaml +104 -0
- package/modules/system/src/acl/permissions.ts +10 -0
- package/modules/system/src/client/ModuleSettingRow.tsrx +191 -0
- package/modules/system/src/client/ModuleSettingsSection.tsrx +155 -0
- package/modules/system/src/client/ModulesView.tsrx +241 -0
- package/modules/system/src/client/api.ts +36 -0
- package/modules/system/src/client/contribution.tsrx +48 -0
- package/modules/system/src/client/index.ts +26 -0
- package/modules/system/src/client/module-columns.tsrx +66 -0
- package/modules/system/src/client/overview-api.ts +30 -0
- package/modules/system/src/client/setting-copy.ts +30 -0
- package/modules/system/src/client/settings-api.ts +57 -0
- package/modules/system/src/client/state.ts +16 -0
- package/modules/system/src/index.ts +11 -0
- package/modules/system/src/platform.ts +11 -0
- package/modules/system/src/server/endpoints.ts +372 -0
- package/modules/system/src/server/index.ts +11 -0
- package/modules/system/src/server/module-catalog.ts +117 -0
- package/modules/system/translations/en.json +64 -0
- package/modules/system/translations/pl.json +64 -0
- package/modules/users/migrations/README.md +3 -0
- package/modules/users/module.json +27 -0
- package/modules/users/package.json +54 -0
- package/modules/users/spec/module.yaml +79 -0
- package/modules/users/src/acl/permissions.ts +6 -0
- package/modules/users/src/api/endpoints.ts +222 -0
- package/modules/users/src/client/InviteMemberForm.tsrx +62 -0
- package/modules/users/src/client/MemberDrawer.tsrx +298 -0
- package/modules/users/src/client/RoleForm.tsrx +140 -0
- package/modules/users/src/client/RolesView.tsrx +288 -0
- package/modules/users/src/client/UserAccountForm.tsrx +86 -0
- package/modules/users/src/client/UsersView.tsrx +486 -0
- package/modules/users/src/client/api.ts +172 -0
- package/modules/users/src/client/contribution.tsrx +92 -0
- package/modules/users/src/client/index.ts +19 -0
- package/modules/users/src/client/member-columns.tsrx +52 -0
- package/modules/users/src/client/roles-api.ts +90 -0
- package/modules/users/src/client/state.ts +42 -0
- package/modules/users/src/index.ts +27 -0
- package/modules/users/src/platform.ts +11 -0
- package/modules/users/src/services/index.ts +2 -0
- package/modules/users/src/services/users-service.ts +142 -0
- package/modules/users/translations/en.json +133 -0
- package/modules/users/translations/pl.json +133 -0
- package/modules/workflows/migrations/0001_workflows_core.down.sql +19 -0
- package/modules/workflows/migrations/0001_workflows_core.up.sql +228 -0
- package/modules/workflows/migrations/0002_workflows_authorization_subject.down.sql +1 -0
- package/modules/workflows/migrations/0002_workflows_authorization_subject.up.sql +9 -0
- package/modules/workflows/migrations/0003_workflows_worker_role.up.sql +34 -0
- package/modules/workflows/migrations/README.md +7 -0
- package/modules/workflows/module.json +31 -0
- package/modules/workflows/package.json +55 -0
- package/modules/workflows/spec/module.yaml +227 -0
- package/modules/workflows/src/acl/permissions.ts +10 -0
- package/modules/workflows/src/api/endpoints.ts +852 -0
- package/modules/workflows/src/client/WorkflowCanvas.tsrx +819 -0
- package/modules/workflows/src/client/WorkflowCreateForm.tsrx +111 -0
- package/modules/workflows/src/client/WorkflowEditor.tsrx +443 -0
- package/modules/workflows/src/client/WorkflowExecutionHistory.tsrx +169 -0
- package/modules/workflows/src/client/WorkflowFixtureDrawer.tsrx +206 -0
- package/modules/workflows/src/client/WorkflowInputForm.tsrx +125 -0
- package/modules/workflows/src/client/WorkflowInputSchemaEditor.tsrx +185 -0
- package/modules/workflows/src/client/WorkflowInspector.tsrx +471 -0
- package/modules/workflows/src/client/WorkflowLiveConfirmation.tsrx +67 -0
- package/modules/workflows/src/client/WorkflowMappingEditor.tsrx +283 -0
- package/modules/workflows/src/client/WorkflowNodePalette.tsrx +50 -0
- package/modules/workflows/src/client/WorkflowPointerField.tsrx +178 -0
- package/modules/workflows/src/client/WorkflowRevisionReview.tsrx +49 -0
- package/modules/workflows/src/client/WorkflowRunInspector.tsrx +143 -0
- package/modules/workflows/src/client/WorkflowTestPanel.tsrx +109 -0
- package/modules/workflows/src/client/WorkflowValidationPanel.tsrx +139 -0
- package/modules/workflows/src/client/WorkflowsView.tsrx +1060 -0
- package/modules/workflows/src/client/api.ts +312 -0
- package/modules/workflows/src/client/canvas-model.ts +472 -0
- package/modules/workflows/src/client/connected-node.ts +71 -0
- package/modules/workflows/src/client/contribution.tsrx +57 -0
- package/modules/workflows/src/client/create-model.ts +15 -0
- package/modules/workflows/src/client/draft-repair.ts +86 -0
- package/modules/workflows/src/client/index.ts +19 -0
- package/modules/workflows/src/client/input-model.ts +124 -0
- package/modules/workflows/src/client/mapping-model.ts +110 -0
- package/modules/workflows/src/client/pointer-model.ts +123 -0
- package/modules/workflows/src/client/presentation.ts +62 -0
- package/modules/workflows/src/client/run-actions.ts +19 -0
- package/modules/workflows/src/client/state.ts +57 -0
- package/modules/workflows/src/client/viewport.ts +107 -0
- package/modules/workflows/src/client/workflows.css +899 -0
- package/modules/workflows/src/domain/events.ts +399 -0
- package/modules/workflows/src/domain/graph.ts +1136 -0
- package/modules/workflows/src/domain/types.ts +563 -0
- package/modules/workflows/src/index.ts +27 -0
- package/modules/workflows/src/platform.ts +49 -0
- package/modules/workflows/src/server/index.ts +13 -0
- package/modules/workflows/src/server/runtime.ts +266 -0
- package/modules/workflows/src/services/cursor-codec.ts +62 -0
- package/modules/workflows/src/services/database-repository.ts +2407 -0
- package/modules/workflows/src/services/index.ts +6 -0
- package/modules/workflows/src/services/migration.ts +375 -0
- package/modules/workflows/src/services/payload-codec.ts +264 -0
- package/modules/workflows/src/services/repository.ts +285 -0
- package/modules/workflows/src/services/simulation.ts +359 -0
- package/modules/workflows/src/services/worker.ts +1196 -0
- package/modules/workflows/src/services/workflows-service.ts +1395 -0
- package/modules/workflows/translations/en.json +348 -0
- package/modules/workflows/translations/pl.json +348 -0
- package/modules.json +41 -0
- package/package.json +125 -0
- package/packages/ai-provider/package.json +46 -0
- package/packages/ai-provider/src/catalog.ts +102 -0
- package/packages/ai-provider/src/errors.ts +110 -0
- package/packages/ai-provider/src/index.ts +33 -0
- package/packages/ai-provider/src/model.ts +198 -0
- package/packages/ai-provider/src/pricing.ts +73 -0
- package/packages/cli-protocol/package.json +40 -0
- package/packages/cli-protocol/src/index.ts +113 -0
- package/packages/client/package.json +46 -0
- package/packages/client/src/ApplicationShell.tsrx +374 -0
- package/packages/client/src/contributions.ts +172 -0
- package/packages/client/src/i18n/index.ts +30 -0
- package/packages/client/src/i18n/locale.ts +25 -0
- package/packages/client/src/i18n/locales/en.json +66 -0
- package/packages/client/src/i18n/locales/pl.json +66 -0
- package/packages/client/src/i18n/runtime.ts +201 -0
- package/packages/client/src/i18n/translations.ts +88 -0
- package/packages/client/src/index.ts +55 -0
- package/packages/client/src/routing.ts +9 -0
- package/packages/client/src/shell/BrandMark.tsrx +10 -0
- package/packages/client/src/shell/CommandPalette.tsrx +79 -0
- package/packages/client/src/shell/ContributionOutlets.tsrx +31 -0
- package/packages/client/src/shell/DashboardView.tsrx +60 -0
- package/packages/client/src/shell/MobileHeader.tsrx +24 -0
- package/packages/client/src/shell/OrganizationSwitcher.tsrx +100 -0
- package/packages/client/src/shell/OverviewCharts.tsrx +167 -0
- package/packages/client/src/shell/PrimaryNavigation.tsrx +75 -0
- package/packages/client/src/shell/Sidebar.tsrx +76 -0
- package/packages/client/src/shell/Topbar.tsrx +44 -0
- package/packages/client/src/shell/UserMenu.tsrx +103 -0
- package/packages/client/src/shell/WorkspaceContent.tsrx +30 -0
- package/packages/client/src/shell/identity.ts +12 -0
- package/packages/client/src/shell/navigation.ts +68 -0
- package/packages/client/src/shell/shell.css +734 -0
- package/packages/client/src/shell/types.ts +29 -0
- package/packages/client/src/state.ts +63 -0
- package/packages/client/src/web.ts +39 -0
- package/packages/coding-agent/package.json +44 -0
- package/packages/coding-agent/src/drivers/byok.ts +322 -0
- package/packages/coding-agent/src/drivers/claude-code.ts +290 -0
- package/packages/coding-agent/src/drivers/codex.ts +281 -0
- package/packages/coding-agent/src/index.ts +56 -0
- package/packages/coding-agent/src/registry.ts +119 -0
- package/packages/coding-agent/src/roles/contract.ts +60 -0
- package/packages/coding-agent/src/roles/defaults.ts +134 -0
- package/packages/coding-agent/src/roles/handoff.ts +41 -0
- package/packages/coding-agent/src/roles/registry.ts +156 -0
- package/packages/coding-agent/src/roles/skills.ts +72 -0
- package/packages/coding-agent/src/roles/sync.ts +88 -0
- package/packages/coding-agent/src/types.ts +102 -0
- package/packages/coding-agent/src/workspace.ts +275 -0
- package/packages/contracts/package.json +38 -0
- package/packages/contracts/schemas/blueprint.schema.json +48 -0
- package/packages/contracts/schemas/cli-extension.schema.json +90 -0
- package/packages/contracts/schemas/module-artifact.schema.json +82 -0
- package/packages/contracts/schemas/module-catalog.schema.json +48 -0
- package/packages/contracts/schemas/module-spec.schema.json +111 -0
- package/packages/contracts/schemas/module.schema.json +156 -0
- package/packages/contracts/schemas/platform-spec.schema.json +17 -0
- package/packages/contracts/schemas/project.schema.json +270 -0
- package/packages/contracts/src/index.ts +191 -0
- package/packages/contracts/src/module-distribution.ts +47 -0
- package/packages/contracts/src/schemas.ts +18 -0
- package/packages/contracts/src/variables.ts +156 -0
- package/packages/contracts/src/web.ts +60 -0
- package/packages/database/package.json +43 -0
- package/packages/database/src/contracts.ts +399 -0
- package/packages/database/src/index.ts +112 -0
- package/packages/database/src/migrations.ts +444 -0
- package/packages/database/src/postgresql.ts +517 -0
- package/packages/database/src/provider.ts +639 -0
- package/packages/database/src/record-history.ts +201 -0
- package/packages/database/src/registry.ts +265 -0
- package/packages/database/src/reset.ts +87 -0
- package/packages/database-pglite/package.json +42 -0
- package/packages/database-pglite/src/driver.ts +168 -0
- package/packages/database-pglite/src/index.ts +2 -0
- package/packages/database-testing/package.json +44 -0
- package/packages/database-testing/src/index.ts +8 -0
- package/packages/database-testing/src/pglite.ts +124 -0
- package/packages/database-testing/src/postgres.ts +184 -0
- package/packages/database-testing/src/provider.ts +43 -0
- package/packages/database-testing/src/vitest-preset.ts +23 -0
- package/packages/dev-console/README.md +6 -0
- package/packages/dev-console/package.json +38 -0
- package/packages/dev-console/src/index.mjs +220 -0
- package/packages/harness/package.json +47 -0
- package/packages/harness/schemas/task-packet.schema.json +48 -0
- package/packages/harness/src/catalog.ts +24 -0
- package/packages/harness/src/errors.ts +9 -0
- package/packages/harness/src/index.ts +53 -0
- package/packages/harness/src/preamble.ts +31 -0
- package/packages/harness/src/runtime.ts +833 -0
- package/packages/harness/src/task-packet.ts +86 -0
- package/packages/harness/src/tool-adapters.ts +106 -0
- package/packages/harness/src/tool-contract.ts +242 -0
- package/packages/harness/src/vercel-ai-provider.ts +198 -0
- package/packages/kernel/package.json +44 -0
- package/packages/kernel/src/acl.ts +20 -0
- package/packages/kernel/src/actor.ts +139 -0
- package/packages/kernel/src/agent-registry.ts +81 -0
- package/packages/kernel/src/capability-registry.ts +28 -0
- package/packages/kernel/src/errors.ts +9 -0
- package/packages/kernel/src/index.ts +90 -0
- package/packages/kernel/src/legacy-local-state.ts +103 -0
- package/packages/kernel/src/module-compatibility.ts +70 -0
- package/packages/kernel/src/module-registry.ts +124 -0
- package/packages/kernel/src/module-settings.ts +403 -0
- package/packages/kernel/src/record-history.ts +146 -0
- package/packages/kernel/src/runtime-config.ts +51 -0
- package/packages/kernel/src/tool-registry.ts +25 -0
- package/packages/kernel/src/variable-registry.ts +339 -0
- package/packages/sandbox/README.md +691 -0
- package/packages/sandbox/bin/flowdular-sandbox.mjs +393 -0
- package/packages/sandbox/dist/client/assets/App-ClMOrpyg.js +11 -0
- package/packages/sandbox/dist/client/assets/PreviewHost-BHiHrfbQ.js +1 -0
- package/packages/sandbox/dist/client/assets/auto-buGEq6de.js +3 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2 +0 -0
- package/packages/sandbox/dist/client/assets/index-CvwhlQ87.js +4 -0
- package/packages/sandbox/dist/client/assets/styles-BPWaGf55.js +3 -0
- package/packages/sandbox/dist/client/assets/styles-Dx1_KOag.css +1 -0
- package/packages/sandbox/dist/client/favicon.svg +1 -0
- package/packages/sandbox/dist/server/assets/auto-CVGNYyb3.js +12785 -0
- package/packages/sandbox/dist/server/assets/chunk-DDJLRBDX-3OUNo51g.js +4125 -0
- package/packages/sandbox/dist/server/assets/nodefs-DVSI7kG0.js +24 -0
- package/packages/sandbox/dist/server/assets/opfs-ahp-D56iokt1.js +388 -0
- package/packages/sandbox/dist/server/assets/token-Bvaq7Anz.js +55 -0
- package/packages/sandbox/dist/server/assets/token-util-BqSvdIPQ.js +3 -0
- package/packages/sandbox/dist/server/assets/token-util-CktFFT4z.js +494 -0
- package/packages/sandbox/dist/server/entry.js +91671 -0
- package/packages/sandbox/dist/server/favicon.svg +1 -0
- package/packages/sandbox/dist/server/index.html +161 -0
- package/packages/sandbox/index.html +159 -0
- package/packages/sandbox/octane.config.ts +36 -0
- package/packages/sandbox/package.json +83 -0
- package/packages/sandbox/public/favicon.svg +1 -0
- package/packages/sandbox/public/og.png +0 -0
- package/packages/sandbox/src/App.tsrx +924 -0
- package/packages/sandbox/src/client/ApprovalHandoff.tsrx +39 -0
- package/packages/sandbox/src/client/ChatPane.tsrx +694 -0
- package/packages/sandbox/src/client/ConnectView.tsrx +86 -0
- package/packages/sandbox/src/client/DiffPane.tsrx +150 -0
- package/packages/sandbox/src/client/EjectModal.tsrx +571 -0
- package/packages/sandbox/src/client/GateResults.tsrx +60 -0
- package/packages/sandbox/src/client/GitHubSettingsModal.tsrx +219 -0
- package/packages/sandbox/src/client/NewSessionForm.tsrx +214 -0
- package/packages/sandbox/src/client/SessionBar.tsrx +151 -0
- package/packages/sandbox/src/client/SessionPicker.tsrx +472 -0
- package/packages/sandbox/src/client/SpecEditor.tsrx +109 -0
- package/packages/sandbox/src/client/SpecReviewCard.tsrx +321 -0
- package/packages/sandbox/src/client/WorkCard.tsrx +128 -0
- package/packages/sandbox/src/client/WorkbenchModal.tsrx +161 -0
- package/packages/sandbox/src/client/WorkspaceMenu.tsrx +100 -0
- package/packages/sandbox/src/client/api.ts +797 -0
- package/packages/sandbox/src/client/attachments.ts +73 -0
- package/packages/sandbox/src/client/dashboard.ts +46 -0
- package/packages/sandbox/src/client/github-settings.ts +48 -0
- package/packages/sandbox/src/client/highlight.ts +105 -0
- package/packages/sandbox/src/client/i18n.ts +32 -0
- package/packages/sandbox/src/client/locales/en.json +466 -0
- package/packages/sandbox/src/client/locales/pl.json +466 -0
- package/packages/sandbox/src/client/session-labels.ts +77 -0
- package/packages/sandbox/src/client/state.ts +108 -0
- package/packages/sandbox/src/index.ts +10 -0
- package/packages/sandbox/src/preview/PreviewHost.tsrx +373 -0
- package/packages/sandbox/src/preview/load-module.ts +16 -0
- package/packages/sandbox/src/server/attachments.ts +308 -0
- package/packages/sandbox/src/server/auto-review.ts +181 -0
- package/packages/sandbox/src/server/checkpoints.ts +90 -0
- package/packages/sandbox/src/server/config.ts +460 -0
- package/packages/sandbox/src/server/dashboard.ts +245 -0
- package/packages/sandbox/src/server/delivery/configuration.ts +193 -0
- package/packages/sandbox/src/server/delivery/git-pr.ts +1473 -0
- package/packages/sandbox/src/server/delivery/index.ts +83 -0
- package/packages/sandbox/src/server/delivery/local.ts +151 -0
- package/packages/sandbox/src/server/delivery/official-modules.ts +516 -0
- package/packages/sandbox/src/server/delivery/plan.ts +218 -0
- package/packages/sandbox/src/server/delivery/policies.ts +239 -0
- package/packages/sandbox/src/server/delivery/record.ts +41 -0
- package/packages/sandbox/src/server/delivery/steps.ts +464 -0
- package/packages/sandbox/src/server/delivery/types.ts +158 -0
- package/packages/sandbox/src/server/dependencies.ts +88 -0
- package/packages/sandbox/src/server/diff.ts +230 -0
- package/packages/sandbox/src/server/gates.ts +388 -0
- package/packages/sandbox/src/server/index.ts +139 -0
- package/packages/sandbox/src/server/path-guard.ts +282 -0
- package/packages/sandbox/src/server/planning.ts +749 -0
- package/packages/sandbox/src/server/platform-client.ts +189 -0
- package/packages/sandbox/src/server/preview-database-host.ts +340 -0
- package/packages/sandbox/src/server/preview-database-protocol.ts +163 -0
- package/packages/sandbox/src/server/preview-database-proxy.ts +356 -0
- package/packages/sandbox/src/server/preview-database.ts +109 -0
- package/packages/sandbox/src/server/preview-ipc.ts +15 -0
- package/packages/sandbox/src/server/preview-modules.ts +83 -0
- package/packages/sandbox/src/server/preview-revision.ts +44 -0
- package/packages/sandbox/src/server/preview-runtime.ts +467 -0
- package/packages/sandbox/src/server/preview-worker-manager.ts +436 -0
- package/packages/sandbox/src/server/preview-worker.ts +168 -0
- package/packages/sandbox/src/server/reference.ts +251 -0
- package/packages/sandbox/src/server/routes.ts +2258 -0
- package/packages/sandbox/src/server/runtime.ts +188 -0
- package/packages/sandbox/src/server/session-owner.ts +23 -0
- package/packages/sandbox/src/server/sessions.ts +849 -0
- package/packages/sandbox/src/server/spec.ts +471 -0
- package/packages/sandbox/src/server/turn-lifecycle.ts +56 -0
- package/packages/sandbox/src/server/turns.ts +993 -0
- package/packages/sandbox/src/server/workspace-install.ts +266 -0
- package/packages/sandbox/src/server/workspace-root.ts +73 -0
- package/packages/sandbox/src/styles.css +1573 -0
- package/packages/sandbox/vite.config.ts +133 -0
- package/packages/server/package.json +43 -0
- package/packages/server/src/application-routes.ts +21 -0
- package/packages/server/src/composition.ts +48 -0
- package/packages/server/src/endpoint.ts +142 -0
- package/packages/server/src/http.ts +128 -0
- package/packages/server/src/index.ts +46 -0
- package/packages/server/src/response-lifetime.ts +56 -0
- package/packages/server/src/security-headers.ts +130 -0
- package/packages/server/src/web-html.ts +55 -0
- package/packages/server/src/web.ts +361 -0
- package/packages/ui/package.json +46 -0
- package/packages/ui/src/brand/BrandMark.tsrx +66 -0
- package/packages/ui/src/brand/mark.ts +44 -0
- package/packages/ui/src/components/Alert.tsrx +17 -0
- package/packages/ui/src/components/Avatar.tsrx +18 -0
- package/packages/ui/src/components/Button.tsrx +29 -0
- package/packages/ui/src/components/Chart.tsrx +274 -0
- package/packages/ui/src/components/CheckGrid.tsrx +93 -0
- package/packages/ui/src/components/ConfirmDialog.tsrx +63 -0
- package/packages/ui/src/components/Drawer.tsrx +71 -0
- package/packages/ui/src/components/EmptyState.tsrx +26 -0
- package/packages/ui/src/components/Filters.tsrx +39 -0
- package/packages/ui/src/components/FormField.tsrx +27 -0
- package/packages/ui/src/components/Kpi.tsrx +36 -0
- package/packages/ui/src/components/PageHeader.tsrx +26 -0
- package/packages/ui/src/components/ScopeSummary.tsrx +76 -0
- package/packages/ui/src/components/SearchField.tsrx +24 -0
- package/packages/ui/src/components/SettingRow.tsrx +50 -0
- package/packages/ui/src/components/Switch.tsrx +21 -0
- package/packages/ui/src/components/Table.tsrx +267 -0
- package/packages/ui/src/components/TableCard.tsrx +52 -0
- package/packages/ui/src/components/Tag.tsrx +28 -0
- package/packages/ui/src/components/VariableField.tsrx +284 -0
- package/packages/ui/src/components/VariableInput.tsrx +7 -0
- package/packages/ui/src/components/VariableSelect.tsrx +72 -0
- package/packages/ui/src/components/VariableTextarea.tsrx +9 -0
- package/packages/ui/src/components/variable-field.ts +61 -0
- package/packages/ui/src/components/variable-select.ts +69 -0
- package/packages/ui/src/icons/Icon.tsrx +56 -0
- package/packages/ui/src/index.ts +81 -0
- package/packages/ui/src/initials.ts +10 -0
- package/packages/ui/src/styles/base.css +71 -0
- package/packages/ui/src/styles/components.css +1859 -0
- package/packages/ui/src/styles/index.css +3 -0
- package/packages/ui/src/styles/tokens.css +124 -0
- package/tsconfig.base.json +18 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"blueprint": "security-review@1.0.0",
|
|
3
|
+
"checksRun": ["grep -rn \"new ServerRoute\" modules/inventory/src"],
|
|
4
|
+
"findings": [
|
|
5
|
+
{
|
|
6
|
+
"severity": "blocker",
|
|
7
|
+
"claim": "Looks unsafe.",
|
|
8
|
+
"location": "modules/inventory/src/api/endpoints.ts",
|
|
9
|
+
"rule": "AGENTS.md rule 5",
|
|
10
|
+
"fix": "Rewrite it."
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"verdict": "changes-required"
|
|
14
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"blueprint": "security-review@1.0.0",
|
|
3
|
+
"checksRun": [
|
|
4
|
+
"grep -rn \"new ServerRoute\" modules/inventory/src",
|
|
5
|
+
"grep -rn tenantId modules/inventory/src/api",
|
|
6
|
+
"pnpm --filter @flowdular/module-inventory test"
|
|
7
|
+
],
|
|
8
|
+
"findings": [
|
|
9
|
+
{
|
|
10
|
+
"severity": "blocker",
|
|
11
|
+
"claim": "Tenant id is read from the request body.",
|
|
12
|
+
"location": "modules/inventory/src/api/endpoints.ts:41",
|
|
13
|
+
"scenario": "A member of tenant A posts { tenantId: \"B\" } and creates a location in tenant B.",
|
|
14
|
+
"rule": "AGENTS.md rule 6",
|
|
15
|
+
"fix": "Use principalFromContext(octane)!.tenantId and remove the body field."
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"verdict": "changes-required"
|
|
19
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
schemaVersion: 1
|
|
2
|
+
# Read-only checks. Nothing executes this file.
|
|
3
|
+
gates:
|
|
4
|
+
- id: raw-routes
|
|
5
|
+
command: grep -rn "new ServerRoute" modules/*/src | grep -v modules/auth
|
|
6
|
+
expect: no output
|
|
7
|
+
required: true
|
|
8
|
+
- id: tenant-from-input
|
|
9
|
+
command: grep -rn tenantId modules/*/src/api | grep -v principalFromContext
|
|
10
|
+
expect: no output
|
|
11
|
+
required: true
|
|
12
|
+
- id: unbounded-body
|
|
13
|
+
command: grep -rn "request.json()" modules/*/src
|
|
14
|
+
expect: no output outside modules/auth and modules/users
|
|
15
|
+
required: true
|
|
16
|
+
- id: public-endpoints
|
|
17
|
+
command: 'grep -rn "kind: ''public''" modules/*/src'
|
|
18
|
+
expect: each hit has a written reason
|
|
19
|
+
required: true
|
|
20
|
+
- id: tests
|
|
21
|
+
command: pnpm --filter @flowdular/module-{module} test
|
|
22
|
+
required: true
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": ["kind", "target"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"kind": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"enum": ["module", "package", "pull-request"]
|
|
10
|
+
},
|
|
11
|
+
"target": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"minLength": 1
|
|
14
|
+
},
|
|
15
|
+
"diffRef": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"minLength": 1
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": ["blueprint", "checksRun", "findings", "verdict"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"blueprint": {
|
|
8
|
+
"const": "security-review@1.0.0"
|
|
9
|
+
},
|
|
10
|
+
"checksRun": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"minItems": 1,
|
|
13
|
+
"items": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"minLength": 1
|
|
16
|
+
},
|
|
17
|
+
"uniqueItems": true
|
|
18
|
+
},
|
|
19
|
+
"findings": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"items": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"additionalProperties": false,
|
|
24
|
+
"required": [
|
|
25
|
+
"severity",
|
|
26
|
+
"claim",
|
|
27
|
+
"location",
|
|
28
|
+
"scenario",
|
|
29
|
+
"rule",
|
|
30
|
+
"fix"
|
|
31
|
+
],
|
|
32
|
+
"properties": {
|
|
33
|
+
"severity": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"enum": ["blocker", "should-fix", "taste"]
|
|
36
|
+
},
|
|
37
|
+
"claim": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"minLength": 1
|
|
40
|
+
},
|
|
41
|
+
"location": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"minLength": 1
|
|
44
|
+
},
|
|
45
|
+
"scenario": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"minLength": 1
|
|
48
|
+
},
|
|
49
|
+
"rule": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"minLength": 1
|
|
52
|
+
},
|
|
53
|
+
"fix": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"minLength": 1
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"verdict": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"enum": ["approved", "changes-required"]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
schemaVersion: 1
|
|
2
|
+
# A review changes no spec. It checks that the spec and the code agree.
|
|
3
|
+
status:
|
|
4
|
+
allowed:
|
|
5
|
+
- approved
|
|
6
|
+
checks:
|
|
7
|
+
- permissions[].id equal the constants in src/acl/permissions.ts
|
|
8
|
+
- every endpoint permission appears in the spec
|
|
9
|
+
- a denial scenario and a tenant isolation scenario exist
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
schemaVersion: 1
|
|
2
|
+
steps:
|
|
3
|
+
- id: surface
|
|
4
|
+
role: reviewer
|
|
5
|
+
action: List every route in src/api/endpoints.ts and check access, resolveIdentity, sessionMutationDenial order, readJsonObject bounds, tenant source, bound SQL, error envelope.
|
|
6
|
+
inputs:
|
|
7
|
+
- 'target'
|
|
8
|
+
outputs:
|
|
9
|
+
- 'endpoint table'
|
|
10
|
+
- id: scopes
|
|
11
|
+
role: reviewer
|
|
12
|
+
action: Compare spec permissions, src/acl/permissions.ts, endpoint access and client scope; check whether auth sync-scopes is part of the landing.
|
|
13
|
+
inputs:
|
|
14
|
+
- 'spec/module.yaml'
|
|
15
|
+
- 'src/acl/permissions.ts'
|
|
16
|
+
outputs:
|
|
17
|
+
- 'scope findings'
|
|
18
|
+
- id: greps
|
|
19
|
+
role: reviewer
|
|
20
|
+
action: Run the greps in .ai/skills/auth-security-review/SKILL.md section 5 and record the output.
|
|
21
|
+
inputs:
|
|
22
|
+
- 'target'
|
|
23
|
+
outputs:
|
|
24
|
+
- 'grep evidence'
|
|
25
|
+
- id: tests
|
|
26
|
+
role: reviewer
|
|
27
|
+
action: Confirm the 401, 403, cross-tenant, CSRF and validation tests exist and fail when their guard is removed.
|
|
28
|
+
inputs:
|
|
29
|
+
- 'tests/'
|
|
30
|
+
outputs:
|
|
31
|
+
- 'test evidence'
|
|
32
|
+
- id: report
|
|
33
|
+
role: reviewer
|
|
34
|
+
action: Findings by severity with a concrete failure scenario each; verdict approved or changes-required; no code changes.
|
|
35
|
+
inputs:
|
|
36
|
+
- 'evidence'
|
|
37
|
+
outputs:
|
|
38
|
+
- 'review report'
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
schemaVersion: 1
|
|
2
|
+
# What the CLI actually exposes and how the runner gates it. Consumed by nobody:
|
|
3
|
+
# packages/cli/src/doctor.ts only checks that this file exists
|
|
4
|
+
# (policy.capabilities). The real policy is code: core descriptors in
|
|
5
|
+
# packages/cli/src/capabilities.ts, module descriptors in each
|
|
6
|
+
# modules/*/src/cli/commands.json, approval logic in packages/cli/src/runner.ts
|
|
7
|
+
# (runExtensionCommand). Keep this file in step with those three places.
|
|
8
|
+
default: deny
|
|
9
|
+
|
|
10
|
+
# packages/cli/src/capabilities.ts
|
|
11
|
+
core:
|
|
12
|
+
module.search:
|
|
13
|
+
command: pnpm flowdular module search [query]
|
|
14
|
+
risk: read
|
|
15
|
+
note: host-only official HTTPS catalog lookup; does not grant sandbox network access
|
|
16
|
+
module.info:
|
|
17
|
+
command: pnpm flowdular module info <id>
|
|
18
|
+
risk: read
|
|
19
|
+
module.install:
|
|
20
|
+
command: pnpm flowdular module install <id[@version]> [--apply]
|
|
21
|
+
risk: workspace-write
|
|
22
|
+
supportsDryRun: true
|
|
23
|
+
note: host-only source installation; no scripts, activation, permissions or database changes
|
|
24
|
+
module.update:
|
|
25
|
+
command: pnpm flowdular module update <id[@version]> [--apply]
|
|
26
|
+
risk: workspace-write
|
|
27
|
+
supportsDryRun: true
|
|
28
|
+
note: rejects local edits, changed historical migrations and downgrades
|
|
29
|
+
module.recover:
|
|
30
|
+
command: pnpm flowdular module recover [--apply]
|
|
31
|
+
risk: workspace-write
|
|
32
|
+
supportsDryRun: true
|
|
33
|
+
note: requires the original installation process to have exited
|
|
34
|
+
workspace.doctor:
|
|
35
|
+
command: pnpm flowdular doctor
|
|
36
|
+
risk: read
|
|
37
|
+
spec.validate:
|
|
38
|
+
command: pnpm flowdular spec validate --all
|
|
39
|
+
risk: read
|
|
40
|
+
blueprint.validate:
|
|
41
|
+
command: pnpm flowdular blueprint validate --all
|
|
42
|
+
risk: read
|
|
43
|
+
note: validates every .ai/blueprints/*/blueprint.json and checks the companion files exist
|
|
44
|
+
module.validate:
|
|
45
|
+
command: pnpm flowdular module validate
|
|
46
|
+
risk: read
|
|
47
|
+
note: 'schema plus composition entries (PLATFORM_SERVER_ENTRY_MISSING, PLATFORM_EXPORT_MISSING, PLATFORM_CLIENT_ENTRY_MISSING, PLATFORM_CLIENT_EXPORT_MISSING), PACKAGE_NAME_MISMATCH, SPEC_ID_MISMATCH, TRANSLATION_FILE_MISSING, TRANSLATION_KEYS_MISMATCH; warnings SPEC_VERSION_DRIFT, LOCALE_NOT_IN_PROJECT (packages/cli/src/module-validate.ts)'
|
|
48
|
+
module.create:
|
|
49
|
+
command: pnpm flowdular module new <id> --spec <path> [--apply]
|
|
50
|
+
risk: workspace-write
|
|
51
|
+
requiresApprovedSpec: true
|
|
52
|
+
supportsDryRun: true
|
|
53
|
+
migration.status:
|
|
54
|
+
command: pnpm flowdular migration status [--module <id>] [--json]
|
|
55
|
+
risk: read
|
|
56
|
+
note: 'per module database, each migration is applied, adopted (its objects already exist, so the runner will only record it), pending, or mismatch; fails with MIGRATION_CHECKSUM_MISMATCH when an applied migration was edited (packages/cli/src/migration.ts)'
|
|
57
|
+
migration.verify:
|
|
58
|
+
command: pnpm flowdular migration verify
|
|
59
|
+
risk: read
|
|
60
|
+
note: 'checks every ledger row against the checksum of the migration in the workspace; failure code MIGRATION_LEDGER_INVALID with mismatched and unknown ids per module'
|
|
61
|
+
migration.apply.local:
|
|
62
|
+
command: pnpm flowdular migration apply --module <id> [--apply]
|
|
63
|
+
risk: process
|
|
64
|
+
localOnly: true
|
|
65
|
+
supportsDryRun: true
|
|
66
|
+
effect: applies or adopts the outstanding migrations of one module against the configured PostgreSQL (embedded PGlite outside production) and writes the _coreloom_migrations_v2 ledger; without --apply it reports the plan and writes nothing
|
|
67
|
+
workspace.state.migrate:
|
|
68
|
+
command: pnpm flowdular setup migrate-state [--apply --confirm migrate-legacy-state]
|
|
69
|
+
risk: destructive
|
|
70
|
+
localOnly: true
|
|
71
|
+
confirmation: migrate-legacy-state
|
|
72
|
+
supportsDryRun: true
|
|
73
|
+
effect: copies recognized pre-Flowdular databases and vault keys into .flowdular/data, verifies their hashes, and preserves every source file; refuses links, collisions, and database sidecar files
|
|
74
|
+
|
|
75
|
+
# Commands dispatched by packages/cli/src/runner.ts without a capability descriptor.
|
|
76
|
+
commandsWithoutDescriptor:
|
|
77
|
+
- pnpm flowdular help
|
|
78
|
+
- pnpm flowdular capability list|describe <id>|run <id>
|
|
79
|
+
- pnpm flowdular blueprint list
|
|
80
|
+
- pnpm flowdular module list
|
|
81
|
+
- pnpm flowdular module sync [--apply]
|
|
82
|
+
- pnpm flowdular module enable <id> [--apply] (with --apply also runs auth.scopes.sync; result field scopes, failure code MODULE_SCOPES_SYNC_FAILED)
|
|
83
|
+
- pnpm flowdular module disable <id> [--apply]
|
|
84
|
+
- pnpm flowdular setup check
|
|
85
|
+
- pnpm flowdular setup quick (alias of auth.greenfield.reset)
|
|
86
|
+
|
|
87
|
+
# modules/*/src/cli/commands.json, loaded only for modules enabled in flowdular.json
|
|
88
|
+
modules:
|
|
89
|
+
auth.core:
|
|
90
|
+
auth.scopes.list:
|
|
91
|
+
command: pnpm flowdular auth scopes
|
|
92
|
+
risk: read
|
|
93
|
+
auth.scopes.sync:
|
|
94
|
+
command: pnpm flowdular auth sync-scopes --module <id> [--apply]
|
|
95
|
+
risk: process
|
|
96
|
+
supportsDryRun: true
|
|
97
|
+
effect: grants the module spec permissions to every tenant owner in the auth database
|
|
98
|
+
auth.greenfield.reset:
|
|
99
|
+
command: pnpm flowdular auth greenfield --apply --confirm reset-local-auth
|
|
100
|
+
risk: destructive
|
|
101
|
+
localOnly: true
|
|
102
|
+
confirmation: reset-local-auth
|
|
103
|
+
supportsDryRun: true
|
|
104
|
+
effect: resets .flowdular/data/auth.db and seeds demo tenants and accounts
|
|
105
|
+
agents.core:
|
|
106
|
+
agents.status:
|
|
107
|
+
command: pnpm flowdular agents status
|
|
108
|
+
risk: read
|
|
109
|
+
agents.audit.verify:
|
|
110
|
+
command: pnpm flowdular agents audit-verify --tenant <id>
|
|
111
|
+
risk: read
|
|
112
|
+
localOnly: true
|
|
113
|
+
sandbox.core:
|
|
114
|
+
sandbox.access.list:
|
|
115
|
+
command: pnpm flowdular sandbox access
|
|
116
|
+
risk: read
|
|
117
|
+
sandbox.access.grant:
|
|
118
|
+
command: pnpm flowdular sandbox grant [--apply]
|
|
119
|
+
risk: process
|
|
120
|
+
supportsDryRun: true
|
|
121
|
+
sandbox.access.revoke:
|
|
122
|
+
command: pnpm flowdular sandbox revoke [--apply]
|
|
123
|
+
risk: process
|
|
124
|
+
supportsDryRun: true
|
|
125
|
+
sandbox.sessions.list:
|
|
126
|
+
command: pnpm flowdular sandbox sessions
|
|
127
|
+
risk: read
|
|
128
|
+
sandbox.sessions.archive:
|
|
129
|
+
command: pnpm flowdular sandbox session-archive [--apply]
|
|
130
|
+
risk: process
|
|
131
|
+
supportsDryRun: true
|
|
132
|
+
sandbox.sessions.delete:
|
|
133
|
+
command: pnpm flowdular sandbox session-delete [--apply]
|
|
134
|
+
risk: process
|
|
135
|
+
supportsDryRun: true
|
|
136
|
+
sandbox.audit.verify:
|
|
137
|
+
command: pnpm flowdular sandbox audit-verify --tenant <id>
|
|
138
|
+
risk: read
|
|
139
|
+
localOnly: true
|
|
140
|
+
|
|
141
|
+
# packages/cli/src/runner.ts, runExtensionCommand, in evaluation order.
|
|
142
|
+
approvals:
|
|
143
|
+
external: refused with APPROVAL_VERIFIER_REQUIRED (no signed approval verifier exists)
|
|
144
|
+
destructive-not-local: refused with APPROVAL_VERIFIER_REQUIRED
|
|
145
|
+
localOnly: refused with LOCAL_ONLY_CAPABILITY unless FD_ENV or NODE_ENV is development or test (unset counts as development)
|
|
146
|
+
requiresApprovedSpec: needs --spec <path>; APPROVED_SPEC_REQUIRED, SPEC_VALIDATION_FAILED or SPEC_NOT_APPROVED otherwise
|
|
147
|
+
destructive-apply: --apply needs --confirm <descriptor.confirmation>; CONFIRMATION_REQUIRED otherwise
|
|
148
|
+
non-read-without-dry-run: EXPLICIT_APPLY_REQUIRED without --apply
|
|
149
|
+
dry-run: non-read with supportsDryRun and no --apply runs with apply=false and warns "Dry run only. No writes were authorized."
|
|
150
|
+
|
|
151
|
+
moduleExtensions:
|
|
152
|
+
discovery: module.json cli.catalog (src/cli/commands.json), schema-validated without executing code
|
|
153
|
+
loadImplementation: module.json cli.entry imported only when the command runs (packages/cli/src/extensions.ts loadCliCommand)
|
|
154
|
+
namespace: first segment of the module id; reserved groups help, doctor, capability, spec, blueprint, module, migration, setup
|
|
155
|
+
metadataIdentical: path and capability object must equal the catalog entry
|
|
156
|
+
requireEnabledModule: true
|
|
157
|
+
|
|
158
|
+
# Planned, no code today. Listed so nobody documents them as available.
|
|
159
|
+
planned:
|
|
160
|
+
- migration.plan (served by "migration apply" without --apply, which is a read-only dry run)
|
|
161
|
+
- migration.apply.remote
|
|
162
|
+
- destructive.execute (signed approval receipts)
|
|
163
|
+
- redaction of *_TOKEN, *_SECRET, *_PASSWORD, DATABASE_URL in a shared logger (only packages/ai-provider/src/errors.ts redactSecrets exists)
|
|
164
|
+
- persisted CLI audit (CommandEnvelope carries a random auditId and evidence per invocation; nothing stores it)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
schemaVersion: 1
|
|
2
|
+
# Consumed by nobody: packages/cli/src/doctor.ts checks that the file exists
|
|
3
|
+
# (policy.model-routing). The sandbox decides drivers, models and roles in code:
|
|
4
|
+
# - driver per session, changeable per turn (packages/sandbox/src/server/routes.ts)
|
|
5
|
+
# - model from the session (session.model) or the driver default
|
|
6
|
+
# (packages/sandbox/src/server/turns.ts, packages/coding-agent/src/drivers/*)
|
|
7
|
+
# - role per turn by deterministic rules (packages/sandbox/src/server/planning.ts
|
|
8
|
+
# routeRole, planHandoff), overridable for one turn in the composer
|
|
9
|
+
# This file documents that behaviour so nobody expects a policy engine.
|
|
10
|
+
|
|
11
|
+
drivers:
|
|
12
|
+
claude-code:
|
|
13
|
+
binary: claude
|
|
14
|
+
modes: [loopback]
|
|
15
|
+
tools: [Read, Write, Edit, Glob, Grep]
|
|
16
|
+
commands: never (no Bash tool; gates run by the sandbox)
|
|
17
|
+
source: packages/coding-agent/src/drivers/claude-code.ts
|
|
18
|
+
codex:
|
|
19
|
+
binary: codex
|
|
20
|
+
modes: [loopback]
|
|
21
|
+
sandbox: workspace-write
|
|
22
|
+
commands: possible inside the workspace; the role contract forbids it but only the sandbox filesystem boundary enforces it
|
|
23
|
+
source: packages/coding-agent/src/drivers/codex.ts
|
|
24
|
+
byok:
|
|
25
|
+
modes: [loopback, self-hosted]
|
|
26
|
+
kinds: [anthropic, openai, azure, openai-compatible, vercel]
|
|
27
|
+
tools: sandbox-owned file tools (list 400 files, read 128 KB per file)
|
|
28
|
+
commands: never
|
|
29
|
+
source: packages/coding-agent/src/drivers/byok.ts, packages/ai-provider/src/catalog.ts
|
|
30
|
+
|
|
31
|
+
# Profiles referenced by .ai/blueprints/*/blueprint.json executorProfiles.
|
|
32
|
+
profiles:
|
|
33
|
+
sandbox-specialist:
|
|
34
|
+
runs: one of the five roles in .ai/agents/sandbox on the session driver
|
|
35
|
+
mayApproveSpecs: false
|
|
36
|
+
mayChangeArchitecture: false
|
|
37
|
+
mayRunCommands: false
|
|
38
|
+
landing: eject
|
|
39
|
+
repo-agent:
|
|
40
|
+
runs: .ai/agents/module-executor.md or spec-author.md in a checkout with a shell (RuleSync generates each driver's root instructions from .ai/rules)
|
|
41
|
+
mayApproveSpecs: false
|
|
42
|
+
mayChangeArchitecture: only through core-extend with an ADR
|
|
43
|
+
mayRunCommands: true
|
|
44
|
+
landing: pnpm verify, pull request
|
|
45
|
+
reviewer:
|
|
46
|
+
runs: .ai/agents/reviewer.md
|
|
47
|
+
mayImplement: false
|
|
48
|
+
output: findings by severity, verdict
|
|
49
|
+
|
|
50
|
+
# Who takes the first sandbox turn (planning.ts classifyByRules) and how the
|
|
51
|
+
# next role is chosen (planHandoff): the HANDOFF line when it names a
|
|
52
|
+
# registered role, otherwise routeRole by module state, and a failed gate
|
|
53
|
+
# always returns to the same role.
|
|
54
|
+
routing:
|
|
55
|
+
new-module: business-manager
|
|
56
|
+
edit-module: business-manager
|
|
57
|
+
spec-words: business-manager
|
|
58
|
+
agent-words: agentic-engineer
|
|
59
|
+
ui-words: frontend-engineer when src/client/contribution.tsrx exists, else ux-designer
|
|
60
|
+
no-server: backend-engineer
|
|
61
|
+
no-client: frontend-engineer
|
|
62
|
+
default: backend-engineer
|
|
63
|
+
|
|
64
|
+
enforced:
|
|
65
|
+
- gates listed in a role's front matter plus dependencies, per draft module (turns.ts runSessionGates)
|
|
66
|
+
- HANDOFF line parsing (packages/coding-agent/src/roles/handoff.ts) and the role's handoff list (planning.ts; self-handoff and roles outside the list fall back to state routing)
|
|
67
|
+
- approval stop for every new or edited module until the current specification matches the operator-approved SHA-256 hash
|
|
68
|
+
- writes outside the active role allowedPaths are quarantined and restored before gates, checkpoints, preview or delivery
|
|
69
|
+
- message length 1 to 20000 characters, brief at least 8 characters
|
|
70
|
+
- at most four chained automatic turns per operator message (session chainDepth)
|
|
71
|
+
notEnforced:
|
|
72
|
+
- model choice per role (one model per session)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
schemaVersion: 1
|
|
2
|
+
# Consumed by nobody (zero references under packages/). Review guidance: who
|
|
3
|
+
# answers for a path and which role may write it.
|
|
4
|
+
owners:
|
|
5
|
+
packages/contracts/**: platform-architecture
|
|
6
|
+
packages/kernel/**: platform-architecture
|
|
7
|
+
packages/server/**: platform-runtime
|
|
8
|
+
packages/client/**: platform-ui
|
|
9
|
+
packages/ui/**: platform-ui
|
|
10
|
+
packages/dev-console/**: platform-ui
|
|
11
|
+
packages/cli/**: platform-tooling
|
|
12
|
+
packages/cli-protocol/**: platform-tooling
|
|
13
|
+
packages/sandbox/**: sandbox-runtime
|
|
14
|
+
packages/coding-agent/**: sandbox-runtime
|
|
15
|
+
packages/ai-provider/**: agent-runtime
|
|
16
|
+
packages/harness/**: agent-runtime
|
|
17
|
+
modules/auth/**: platform-runtime
|
|
18
|
+
modules/system/**: platform-architecture
|
|
19
|
+
modules/users/**: platform-runtime
|
|
20
|
+
modules/agents/**: agent-runtime
|
|
21
|
+
modules/sandbox/**: sandbox-runtime
|
|
22
|
+
modules/{module}/**: module:{module}
|
|
23
|
+
platform/**: platform-composition
|
|
24
|
+
infra/**: platform-operations
|
|
25
|
+
.github/**: platform-operations
|
|
26
|
+
docs/**: platform-architecture
|
|
27
|
+
specs/**: platform-architecture
|
|
28
|
+
.ai/**: platform-architecture
|
|
29
|
+
rulesync.jsonc: platform-architecture
|
|
30
|
+
AGENTS.md: generated
|
|
31
|
+
CLAUDE.md: generated
|
|
32
|
+
.agents/skills/**: generated
|
|
33
|
+
.claude/skills/**: generated
|
|
34
|
+
# Inside a module built or changed in the sandbox, the role front matter in
|
|
35
|
+
# .ai/agents/sandbox/*.md says who writes what. Advisory at run time.
|
|
36
|
+
moduleRoles:
|
|
37
|
+
modules/{module}/spec/**: [business-manager, agentic-engineer]
|
|
38
|
+
modules/{module}/translations/**: [business-manager]
|
|
39
|
+
modules/{module}/src/acl/**: [backend-engineer]
|
|
40
|
+
modules/{module}/src/api/**: [backend-engineer]
|
|
41
|
+
modules/{module}/src/server/**: [backend-engineer]
|
|
42
|
+
modules/{module}/src/services/**: [backend-engineer]
|
|
43
|
+
modules/{module}/src/domain/**: [backend-engineer]
|
|
44
|
+
modules/{module}/src/platform.ts: [backend-engineer, agentic-engineer]
|
|
45
|
+
modules/{module}/src/index.ts: [backend-engineer]
|
|
46
|
+
modules/{module}/migrations/**: [backend-engineer]
|
|
47
|
+
modules/{module}/src/client/**: [ux-designer, frontend-engineer]
|
|
48
|
+
modules/{module}/src/agent/**: [agentic-engineer]
|
|
49
|
+
modules/{module}/tests/**:
|
|
50
|
+
[backend-engineer, frontend-engineer, agentic-engineer]
|
|
51
|
+
modules/{module}/module.json: [backend-engineer, agentic-engineer]
|
|
52
|
+
modules/{module}/package.json:
|
|
53
|
+
[backend-engineer, frontend-engineer, agentic-engineer]
|
|
54
|
+
cliOwned:
|
|
55
|
+
flowdular.json: pnpm flowdular module enable|disable --apply
|
|
56
|
+
platform/package.json: pnpm flowdular module enable --apply
|
|
57
|
+
platform/src/generated/**: pnpm flowdular module sync --apply
|
|
58
|
+
packages/coding-agent/src/roles/defaults.ts: role defaults sync script (.ai/README.md)
|
|
59
|
+
packages/ui/src/brand/mark.ts: node packages/ui/scripts/gen-mark.mjs
|
|
60
|
+
AGENTS.md: pnpm rules:generate
|
|
61
|
+
CLAUDE.md: pnpm rules:generate
|
|
62
|
+
.agents/skills/**: pnpm rules:generate
|
|
63
|
+
.claude/skills/**: pnpm rules:generate
|
|
64
|
+
crossOwnerChanges:
|
|
65
|
+
requireReviewer: true
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
schemaVersion: 1
|
|
2
|
+
# Consumed by nobody (zero references under packages/). The values are the
|
|
3
|
+
# review expectation for a change; the sandbox enforces only the limits marked
|
|
4
|
+
# as code.
|
|
5
|
+
defaults:
|
|
6
|
+
maxChangedFiles: 18
|
|
7
|
+
maxRepairLoops: 2
|
|
8
|
+
maxNewDependencies: 0
|
|
9
|
+
requireTests: true
|
|
10
|
+
requireTypecheck: true
|
|
11
|
+
overrides:
|
|
12
|
+
new-module:
|
|
13
|
+
maxChangedFiles: 30
|
|
14
|
+
maxNewDependencies: 0
|
|
15
|
+
note: a full module is about 25 files (.ai/references/catalog has 28 including migrations and translations)
|
|
16
|
+
edit-module:
|
|
17
|
+
maxChangedFiles: 12
|
|
18
|
+
add-migration:
|
|
19
|
+
maxChangedFiles: 8
|
|
20
|
+
bug-fix:
|
|
21
|
+
maxChangedFiles: 4
|
|
22
|
+
requireTests: true
|
|
23
|
+
author-spec:
|
|
24
|
+
maxChangedFiles: 1
|
|
25
|
+
requireTests: false
|
|
26
|
+
core-extend:
|
|
27
|
+
maxChangedFiles: 40
|
|
28
|
+
note: consumers migrate in the same change; count them
|
|
29
|
+
sandbox:
|
|
30
|
+
code:
|
|
31
|
+
messageLength: 1 to 20000 characters (packages/sandbox/src/server/turns.ts)
|
|
32
|
+
briefLength: at least 8 characters (planning.ts assertBrief)
|
|
33
|
+
gateTimeout: 5 minutes per gate, output capped at 12000 characters (gates.ts)
|
|
34
|
+
gateFailure: the same role repairs; no automatic limit on repair turns
|
|
35
|
+
byokReads: 400 listed files, 128 KB per read (packages/coding-agent/src/drivers/byok.ts)
|
|
36
|
+
review:
|
|
37
|
+
chainedTurns: stop and read the transcript after four automatic handoffs on one brief
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Flowdular contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS catalog_items (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
tenant_id TEXT NOT NULL,
|
|
4
|
+
sku TEXT NOT NULL,
|
|
5
|
+
sku_normalized TEXT NOT NULL,
|
|
6
|
+
name TEXT NOT NULL,
|
|
7
|
+
kind TEXT NOT NULL CHECK (kind IN ('product', 'service')),
|
|
8
|
+
unit TEXT NOT NULL,
|
|
9
|
+
base_price_minor BIGINT NOT NULL CHECK (base_price_minor >= 0),
|
|
10
|
+
currency TEXT NOT NULL,
|
|
11
|
+
status TEXT NOT NULL CHECK (status IN ('active', 'archived')),
|
|
12
|
+
created_at BIGINT NOT NULL,
|
|
13
|
+
UNIQUE (tenant_id, sku_normalized)
|
|
14
|
+
);
|
|
15
|
+
CREATE INDEX IF NOT EXISTS catalog_items_tenant_sku_idx
|
|
16
|
+
ON catalog_items (tenant_id, sku_normalized, id);
|
|
17
|
+
ALTER TABLE catalog_items ENABLE ROW LEVEL SECURITY;
|
|
18
|
+
ALTER TABLE catalog_items FORCE ROW LEVEL SECURITY;
|
|
19
|
+
CREATE POLICY catalog_items_tenant_policy ON catalog_items
|
|
20
|
+
USING (tenant_id = current_setting('coreloom.tenant_id', true))
|
|
21
|
+
WITH CHECK (tenant_id = current_setting('coreloom.tenant_id', true));
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS catalog_items_history (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
tenant_id TEXT NOT NULL,
|
|
4
|
+
record_id TEXT NOT NULL,
|
|
5
|
+
version BIGINT NOT NULL CHECK (version >= 1),
|
|
6
|
+
action TEXT NOT NULL CHECK (length(action) BETWEEN 1 AND 32),
|
|
7
|
+
actor_kind TEXT NOT NULL CHECK (actor_kind IN ('user', 'agent')),
|
|
8
|
+
actor_id TEXT NOT NULL CHECK (length(actor_id) BETWEEN 1 AND 128),
|
|
9
|
+
actor_label TEXT NOT NULL CHECK (length(actor_label) BETWEEN 1 AND 160),
|
|
10
|
+
run_id TEXT CHECK (run_id IS NULL OR length(run_id) BETWEEN 1 AND 128),
|
|
11
|
+
changes_json TEXT NOT NULL,
|
|
12
|
+
occurred_at BIGINT NOT NULL
|
|
13
|
+
);
|
|
14
|
+
CREATE UNIQUE INDEX IF NOT EXISTS catalog_items_history_tenant_record_version_idx
|
|
15
|
+
ON catalog_items_history (tenant_id, record_id, version DESC);
|
|
16
|
+
ALTER TABLE catalog_items_history ENABLE ROW LEVEL SECURITY;
|
|
17
|
+
ALTER TABLE catalog_items_history FORCE ROW LEVEL SECURITY;
|
|
18
|
+
CREATE POLICY catalog_items_history_tenant_policy ON catalog_items_history
|
|
19
|
+
USING (tenant_id = current_setting('coreloom.tenant_id', true))
|
|
20
|
+
WITH CHECK (tenant_id = current_setting('coreloom.tenant_id', true));
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS catalog_items_history_v2 (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
tenant_id TEXT NOT NULL,
|
|
4
|
+
record_id TEXT NOT NULL,
|
|
5
|
+
version BIGINT NOT NULL CHECK (version >= 1),
|
|
6
|
+
action TEXT NOT NULL CHECK (length(action) BETWEEN 1 AND 32),
|
|
7
|
+
actor_kind TEXT NOT NULL CHECK (actor_kind IN ('user', 'agent', 'service')),
|
|
8
|
+
actor_id TEXT NOT NULL CHECK (length(actor_id) BETWEEN 1 AND 128),
|
|
9
|
+
actor_label TEXT NOT NULL CHECK (length(actor_label) BETWEEN 1 AND 160),
|
|
10
|
+
run_id TEXT CHECK (run_id IS NULL OR length(run_id) BETWEEN 1 AND 128),
|
|
11
|
+
configured_by_json TEXT CHECK (configured_by_json IS NULL OR configured_by_json::jsonb IS NOT NULL),
|
|
12
|
+
changes_json TEXT NOT NULL,
|
|
13
|
+
occurred_at BIGINT NOT NULL,
|
|
14
|
+
CHECK (
|
|
15
|
+
(actor_kind = 'agent' AND run_id IS NOT NULL)
|
|
16
|
+
OR (actor_kind IN ('user', 'service') AND run_id IS NULL)
|
|
17
|
+
),
|
|
18
|
+
CHECK (
|
|
19
|
+
(actor_kind = 'service' AND configured_by_json IS NOT NULL)
|
|
20
|
+
OR (actor_kind IN ('user', 'agent') AND configured_by_json IS NULL)
|
|
21
|
+
)
|
|
22
|
+
);
|
|
23
|
+
CREATE UNIQUE INDEX IF NOT EXISTS catalog_items_history_v2_tenant_record_version_idx
|
|
24
|
+
ON catalog_items_history_v2 (tenant_id, record_id, version DESC);
|
|
25
|
+
INSERT INTO catalog_items_history_v2
|
|
26
|
+
(id, tenant_id, record_id, version, action, actor_kind, actor_id,
|
|
27
|
+
actor_label, run_id, configured_by_json, changes_json, occurred_at)
|
|
28
|
+
SELECT id, tenant_id, record_id, version, action, actor_kind, actor_id,
|
|
29
|
+
actor_label, run_id, NULL, changes_json, occurred_at
|
|
30
|
+
FROM catalog_items_history
|
|
31
|
+
ON CONFLICT DO NOTHING;
|
|
32
|
+
ALTER TABLE catalog_items_history_v2 ENABLE ROW LEVEL SECURITY;
|
|
33
|
+
ALTER TABLE catalog_items_history_v2 FORCE ROW LEVEL SECURITY;
|
|
34
|
+
CREATE POLICY catalog_items_history_v2_tenant_policy ON catalog_items_history_v2
|
|
35
|
+
USING (tenant_id = current_setting('coreloom.tenant_id', true))
|
|
36
|
+
WITH CHECK (tenant_id = current_setting('coreloom.tenant_id', true));
|