wood-fired-tasks 1.12.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/AGENTS.md +112 -0
- package/CHANGELOG.md +271 -0
- package/CLAUDE.md +21 -0
- package/LICENSE +21 -0
- package/README.md +687 -0
- package/SECURITY.md +299 -0
- package/dist/api/hooks/error-handler.d.ts +6 -0
- package/dist/api/hooks/error-handler.js +128 -0
- package/dist/api/hooks/error-handler.js.map +1 -0
- package/dist/api/plugins/auth/index.d.ts +78 -0
- package/dist/api/plugins/auth/index.js +300 -0
- package/dist/api/plugins/auth/index.js.map +1 -0
- package/dist/api/plugins/auth/keys.d.ts +23 -0
- package/dist/api/plugins/auth/keys.js +100 -0
- package/dist/api/plugins/auth/keys.js.map +1 -0
- package/dist/api/plugins/auth/strategies/legacy.d.ts +46 -0
- package/dist/api/plugins/auth/strategies/legacy.js +87 -0
- package/dist/api/plugins/auth/strategies/legacy.js.map +1 -0
- package/dist/api/plugins/auth/strategies/pat.d.ts +37 -0
- package/dist/api/plugins/auth/strategies/pat.js +99 -0
- package/dist/api/plugins/auth/strategies/pat.js.map +1 -0
- package/dist/api/plugins/auth/strategies/session.d.ts +37 -0
- package/dist/api/plugins/auth/strategies/session.js +30 -0
- package/dist/api/plugins/auth/strategies/session.js.map +1 -0
- package/dist/api/plugins/auth/strategies/types.d.ts +12 -0
- package/dist/api/plugins/auth/strategies/types.js +2 -0
- package/dist/api/plugins/auth/strategies/types.js.map +1 -0
- package/dist/api/plugins/auth.d.ts +29 -0
- package/dist/api/plugins/auth.js +30 -0
- package/dist/api/plugins/auth.js.map +1 -0
- package/dist/api/plugins/swagger.d.ts +31 -0
- package/dist/api/plugins/swagger.js +83 -0
- package/dist/api/plugins/swagger.js.map +1 -0
- package/dist/api/routes/auth/auth-error.d.ts +23 -0
- package/dist/api/routes/auth/auth-error.js +68 -0
- package/dist/api/routes/auth/auth-error.js.map +1 -0
- package/dist/api/routes/auth/callback.d.ts +44 -0
- package/dist/api/routes/auth/callback.js +175 -0
- package/dist/api/routes/auth/callback.js.map +1 -0
- package/dist/api/routes/auth/csrf.d.ts +24 -0
- package/dist/api/routes/auth/csrf.js +75 -0
- package/dist/api/routes/auth/csrf.js.map +1 -0
- package/dist/api/routes/auth/device-code.d.ts +41 -0
- package/dist/api/routes/auth/device-code.js +51 -0
- package/dist/api/routes/auth/device-code.js.map +1 -0
- package/dist/api/routes/auth/device-disabled-stub.d.ts +33 -0
- package/dist/api/routes/auth/device-disabled-stub.js +16 -0
- package/dist/api/routes/auth/device-disabled-stub.js.map +1 -0
- package/dist/api/routes/auth/device-html.d.ts +41 -0
- package/dist/api/routes/auth/device-html.js +243 -0
- package/dist/api/routes/auth/device-html.js.map +1 -0
- package/dist/api/routes/auth/device-token.d.ts +38 -0
- package/dist/api/routes/auth/device-token.js +153 -0
- package/dist/api/routes/auth/device-token.js.map +1 -0
- package/dist/api/routes/auth/disabled-stub.d.ts +31 -0
- package/dist/api/routes/auth/disabled-stub.js +21 -0
- package/dist/api/routes/auth/disabled-stub.js.map +1 -0
- package/dist/api/routes/auth/index.d.ts +65 -0
- package/dist/api/routes/auth/index.js +47 -0
- package/dist/api/routes/auth/index.js.map +1 -0
- package/dist/api/routes/auth/login.d.ts +27 -0
- package/dist/api/routes/auth/login.js +91 -0
- package/dist/api/routes/auth/login.js.map +1 -0
- package/dist/api/routes/auth/logout.d.ts +29 -0
- package/dist/api/routes/auth/logout.js +43 -0
- package/dist/api/routes/auth/logout.js.map +1 -0
- package/dist/api/routes/comments/index.d.ts +3 -0
- package/dist/api/routes/comments/index.js +74 -0
- package/dist/api/routes/comments/index.js.map +1 -0
- package/dist/api/routes/comments/schemas.d.ts +37 -0
- package/dist/api/routes/comments/schemas.js +24 -0
- package/dist/api/routes/comments/schemas.js.map +1 -0
- package/dist/api/routes/dependencies/index.d.ts +3 -0
- package/dist/api/routes/dependencies/index.js +60 -0
- package/dist/api/routes/dependencies/index.js.map +1 -0
- package/dist/api/routes/dependencies/schemas.d.ts +24 -0
- package/dist/api/routes/dependencies/schemas.js +15 -0
- package/dist/api/routes/dependencies/schemas.js.map +1 -0
- package/dist/api/routes/events.d.ts +3 -0
- package/dist/api/routes/events.js +157 -0
- package/dist/api/routes/events.js.map +1 -0
- package/dist/api/routes/health.d.ts +27 -0
- package/dist/api/routes/health.js +231 -0
- package/dist/api/routes/health.js.map +1 -0
- package/dist/api/routes/me/index.d.ts +3 -0
- package/dist/api/routes/me/index.js +8 -0
- package/dist/api/routes/me/index.js.map +1 -0
- package/dist/api/routes/me/profile.d.ts +3 -0
- package/dist/api/routes/me/profile.js +58 -0
- package/dist/api/routes/me/profile.js.map +1 -0
- package/dist/api/routes/me/tokens.d.ts +3 -0
- package/dist/api/routes/me/tokens.js +410 -0
- package/dist/api/routes/me/tokens.js.map +1 -0
- package/dist/api/routes/projects/dependency-graph.d.ts +26 -0
- package/dist/api/routes/projects/dependency-graph.js +56 -0
- package/dist/api/routes/projects/dependency-graph.js.map +1 -0
- package/dist/api/routes/projects/index.d.ts +3 -0
- package/dist/api/routes/projects/index.js +96 -0
- package/dist/api/routes/projects/index.js.map +1 -0
- package/dist/api/routes/projects/schemas.d.ts +37 -0
- package/dist/api/routes/projects/schemas.js +27 -0
- package/dist/api/routes/projects/schemas.js.map +1 -0
- package/dist/api/routes/projects/topology.d.ts +27 -0
- package/dist/api/routes/projects/topology.js +51 -0
- package/dist/api/routes/projects/topology.js.map +1 -0
- package/dist/api/routes/tasks/index.d.ts +3 -0
- package/dist/api/routes/tasks/index.js +330 -0
- package/dist/api/routes/tasks/index.js.map +1 -0
- package/dist/api/routes/tasks/schemas.d.ts +316 -0
- package/dist/api/routes/tasks/schemas.js +129 -0
- package/dist/api/routes/tasks/schemas.js.map +1 -0
- package/dist/api/routes/web/index.d.ts +23 -0
- package/dist/api/routes/web/index.js +30 -0
- package/dist/api/routes/web/index.js.map +1 -0
- package/dist/api/routes/web/login.d.ts +20 -0
- package/dist/api/routes/web/login.js +20 -0
- package/dist/api/routes/web/login.js.map +1 -0
- package/dist/api/routes/web/me.d.ts +23 -0
- package/dist/api/routes/web/me.js +31 -0
- package/dist/api/routes/web/me.js.map +1 -0
- package/dist/api/routes/web/tokens.d.ts +29 -0
- package/dist/api/routes/web/tokens.js +65 -0
- package/dist/api/routes/web/tokens.js.map +1 -0
- package/dist/api/server.d.ts +44 -0
- package/dist/api/server.js +521 -0
- package/dist/api/server.js.map +1 -0
- package/dist/api/start.d.ts +1 -0
- package/dist/api/start.js +79 -0
- package/dist/api/start.js.map +1 -0
- package/dist/cli/api/client.d.ts +126 -0
- package/dist/cli/api/client.js +408 -0
- package/dist/cli/api/client.js.map +1 -0
- package/dist/cli/api/errors.d.ts +16 -0
- package/dist/cli/api/errors.js +20 -0
- package/dist/cli/api/errors.js.map +1 -0
- package/dist/cli/api/types.d.ts +205 -0
- package/dist/cli/api/types.js +15 -0
- package/dist/cli/api/types.js.map +1 -0
- package/dist/cli/auth/browser-open.d.ts +1 -0
- package/dist/cli/auth/browser-open.js +116 -0
- package/dist/cli/auth/browser-open.js.map +1 -0
- package/dist/cli/auth/credentials.d.ts +27 -0
- package/dist/cli/auth/credentials.js +179 -0
- package/dist/cli/auth/credentials.js.map +1 -0
- package/dist/cli/auth/device-flow.d.ts +75 -0
- package/dist/cli/auth/device-flow.js +149 -0
- package/dist/cli/auth/device-flow.js.map +1 -0
- package/dist/cli/bin/tasks-client.d.ts +2 -0
- package/dist/cli/bin/tasks-client.js +86 -0
- package/dist/cli/bin/tasks-client.js.map +1 -0
- package/dist/cli/bin/tasks.d.ts +3 -0
- package/dist/cli/bin/tasks.js +127 -0
- package/dist/cli/bin/tasks.js.map +1 -0
- package/dist/cli/commands/backup.d.ts +3 -0
- package/dist/cli/commands/backup.js +65 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/claim.d.ts +2 -0
- package/dist/cli/commands/claim.js +37 -0
- package/dist/cli/commands/claim.js.map +1 -0
- package/dist/cli/commands/comment-add.d.ts +2 -0
- package/dist/cli/commands/comment-add.js +45 -0
- package/dist/cli/commands/comment-add.js.map +1 -0
- package/dist/cli/commands/comment-delete.d.ts +2 -0
- package/dist/cli/commands/comment-delete.js +56 -0
- package/dist/cli/commands/comment-delete.js.map +1 -0
- package/dist/cli/commands/comment-list.d.ts +2 -0
- package/dist/cli/commands/comment-list.js +56 -0
- package/dist/cli/commands/comment-list.js.map +1 -0
- package/dist/cli/commands/completed.d.ts +10 -0
- package/dist/cli/commands/completed.js +168 -0
- package/dist/cli/commands/completed.js.map +1 -0
- package/dist/cli/commands/completions.d.ts +10 -0
- package/dist/cli/commands/completions.js +179 -0
- package/dist/cli/commands/completions.js.map +1 -0
- package/dist/cli/commands/create.d.ts +2 -0
- package/dist/cli/commands/create.js +99 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/db-check.d.ts +3 -0
- package/dist/cli/commands/db-check.js +63 -0
- package/dist/cli/commands/db-check.js.map +1 -0
- package/dist/cli/commands/db-migrate-identities.d.ts +37 -0
- package/dist/cli/commands/db-migrate-identities.js +352 -0
- package/dist/cli/commands/db-migrate-identities.js.map +1 -0
- package/dist/cli/commands/db-mint-token.d.ts +33 -0
- package/dist/cli/commands/db-mint-token.js +150 -0
- package/dist/cli/commands/db-mint-token.js.map +1 -0
- package/dist/cli/commands/db.d.ts +10 -0
- package/dist/cli/commands/db.js +16 -0
- package/dist/cli/commands/db.js.map +1 -0
- package/dist/cli/commands/delete.d.ts +2 -0
- package/dist/cli/commands/delete.js +54 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/dep-add.d.ts +2 -0
- package/dist/cli/commands/dep-add.js +43 -0
- package/dist/cli/commands/dep-add.js.map +1 -0
- package/dist/cli/commands/dep-list.d.ts +2 -0
- package/dist/cli/commands/dep-list.js +36 -0
- package/dist/cli/commands/dep-list.js.map +1 -0
- package/dist/cli/commands/dep-remove.d.ts +2 -0
- package/dist/cli/commands/dep-remove.js +55 -0
- package/dist/cli/commands/dep-remove.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.js +139 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/health.d.ts +2 -0
- package/dist/cli/commands/health.js +28 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/list.d.ts +2 -0
- package/dist/cli/commands/list.js +103 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/login.d.ts +2 -0
- package/dist/cli/commands/login.js +210 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +31 -0
- package/dist/cli/commands/logout.js +184 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/project-create.d.ts +2 -0
- package/dist/cli/commands/project-create.js +44 -0
- package/dist/cli/commands/project-create.js.map +1 -0
- package/dist/cli/commands/project-delete.d.ts +2 -0
- package/dist/cli/commands/project-delete.js +54 -0
- package/dist/cli/commands/project-delete.js.map +1 -0
- package/dist/cli/commands/project-list.d.ts +2 -0
- package/dist/cli/commands/project-list.js +55 -0
- package/dist/cli/commands/project-list.js.map +1 -0
- package/dist/cli/commands/project-show.d.ts +2 -0
- package/dist/cli/commands/project-show.js +38 -0
- package/dist/cli/commands/project-show.js.map +1 -0
- package/dist/cli/commands/project-update.d.ts +2 -0
- package/dist/cli/commands/project-update.js +56 -0
- package/dist/cli/commands/project-update.js.map +1 -0
- package/dist/cli/commands/show.d.ts +2 -0
- package/dist/cli/commands/show.js +38 -0
- package/dist/cli/commands/show.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +3 -0
- package/dist/cli/commands/stats.js +81 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/commands/subtask-create.d.ts +2 -0
- package/dist/cli/commands/subtask-create.js +85 -0
- package/dist/cli/commands/subtask-create.js.map +1 -0
- package/dist/cli/commands/subtask-list.d.ts +2 -0
- package/dist/cli/commands/subtask-list.js +61 -0
- package/dist/cli/commands/subtask-list.js.map +1 -0
- package/dist/cli/commands/topology.d.ts +16 -0
- package/dist/cli/commands/topology.js +52 -0
- package/dist/cli/commands/topology.js.map +1 -0
- package/dist/cli/commands/update.d.ts +2 -0
- package/dist/cli/commands/update.js +90 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/whoami.d.ts +30 -0
- package/dist/cli/commands/whoami.js +201 -0
- package/dist/cli/commands/whoami.js.map +1 -0
- package/dist/cli/config/env.d.ts +4 -0
- package/dist/cli/config/env.js +25 -0
- package/dist/cli/config/env.js.map +1 -0
- package/dist/cli/output/error-handler.d.ts +5 -0
- package/dist/cli/output/error-handler.js +41 -0
- package/dist/cli/output/error-handler.js.map +1 -0
- package/dist/cli/output/formatters.d.ts +86 -0
- package/dist/cli/output/formatters.js +352 -0
- package/dist/cli/output/formatters.js.map +1 -0
- package/dist/cli/output/json-output.d.ts +39 -0
- package/dist/cli/output/json-output.js +50 -0
- package/dist/cli/output/json-output.js.map +1 -0
- package/dist/cli/output/spinner.d.ts +14 -0
- package/dist/cli/output/spinner.js +48 -0
- package/dist/cli/output/spinner.js.map +1 -0
- package/dist/cli/prompts/interactive.d.ts +25 -0
- package/dist/cli/prompts/interactive.js +80 -0
- package/dist/cli/prompts/interactive.js.map +1 -0
- package/dist/config/env.d.ts +182 -0
- package/dist/config/env.js +311 -0
- package/dist/config/env.js.map +1 -0
- package/dist/db/database.d.ts +11 -0
- package/dist/db/database.js +25 -0
- package/dist/db/database.js.map +1 -0
- package/dist/db/migrate.d.ts +10 -0
- package/dist/db/migrate.js +137 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/migrations/001-initial-schema.d.ts +3 -0
- package/dist/db/migrations/001-initial-schema.js +100 -0
- package/dist/db/migrations/001-initial-schema.js.map +1 -0
- package/dist/db/migrations/002-task-hierarchy-and-dependencies.d.ts +3 -0
- package/dist/db/migrations/002-task-hierarchy-and-dependencies.js +42 -0
- package/dist/db/migrations/002-task-hierarchy-and-dependencies.js.map +1 -0
- package/dist/db/migrations/003-comments-and-estimates.d.ts +3 -0
- package/dist/db/migrations/003-comments-and-estimates.js +36 -0
- package/dist/db/migrations/003-comments-and-estimates.js.map +1 -0
- package/dist/db/migrations/004-claim-protocol.d.ts +3 -0
- package/dist/db/migrations/004-claim-protocol.js +41 -0
- package/dist/db/migrations/004-claim-protocol.js.map +1 -0
- package/dist/db/migrations/005-backlogged-status.d.ts +3 -0
- package/dist/db/migrations/005-backlogged-status.js +156 -0
- package/dist/db/migrations/005-backlogged-status.js.map +1 -0
- package/dist/db/migrations/006-slack-channel-subscriptions.d.ts +3 -0
- package/dist/db/migrations/006-slack-channel-subscriptions.js +23 -0
- package/dist/db/migrations/006-slack-channel-subscriptions.js.map +1 -0
- package/dist/db/migrations/007-completed-at.d.ts +19 -0
- package/dist/db/migrations/007-completed-at.js +36 -0
- package/dist/db/migrations/007-completed-at.js.map +1 -0
- package/dist/db/migrations/008-identity-tables.d.ts +21 -0
- package/dist/db/migrations/008-identity-tables.js +84 -0
- package/dist/db/migrations/008-identity-tables.js.map +1 -0
- package/dist/db/migrations/009-parallel-fk-columns.d.ts +33 -0
- package/dist/db/migrations/009-parallel-fk-columns.js +62 -0
- package/dist/db/migrations/009-parallel-fk-columns.js.map +1 -0
- package/dist/db/migrations/010-identity-uniqueness-indexes.d.ts +47 -0
- package/dist/db/migrations/010-identity-uniqueness-indexes.js +65 -0
- package/dist/db/migrations/010-identity-uniqueness-indexes.js.map +1 -0
- package/dist/db/migrations/011-acceptance-criteria.d.ts +30 -0
- package/dist/db/migrations/011-acceptance-criteria.js +41 -0
- package/dist/db/migrations/011-acceptance-criteria.js.map +1 -0
- package/dist/db/migrations/012-verification-evidence.d.ts +41 -0
- package/dist/db/migrations/012-verification-evidence.js +49 -0
- package/dist/db/migrations/012-verification-evidence.js.map +1 -0
- package/dist/events/event-bus.d.ts +101 -0
- package/dist/events/event-bus.js +184 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/events/sse-manager.d.ts +79 -0
- package/dist/events/sse-manager.js +220 -0
- package/dist/events/sse-manager.js.map +1 -0
- package/dist/events/types.d.ts +43 -0
- package/dist/events/types.js +22 -0
- package/dist/events/types.js.map +1 -0
- package/dist/index.d.ts +110 -0
- package/dist/index.js +209 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/audit/schema.d.ts +201 -0
- package/dist/lib/audit/schema.js +141 -0
- package/dist/lib/audit/schema.js.map +1 -0
- package/dist/lib/decompose/schema.d.ts +157 -0
- package/dist/lib/decompose/schema.js +138 -0
- package/dist/lib/decompose/schema.js.map +1 -0
- package/dist/lib/loop-run/integration-audit-schema.d.ts +78 -0
- package/dist/lib/loop-run/integration-audit-schema.js +68 -0
- package/dist/lib/loop-run/integration-audit-schema.js.map +1 -0
- package/dist/lib/loop-run/schema.d.ts +49 -0
- package/dist/lib/loop-run/schema.js +67 -0
- package/dist/lib/loop-run/schema.js.map +1 -0
- package/dist/mcp/errors.d.ts +11 -0
- package/dist/mcp/errors.js +29 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/identity-resolution.d.ts +76 -0
- package/dist/mcp/identity-resolution.js +189 -0
- package/dist/mcp/identity-resolution.js.map +1 -0
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.js +126 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/remote/index.d.ts +21 -0
- package/dist/mcp/remote/index.js +95 -0
- package/dist/mcp/remote/index.js.map +1 -0
- package/dist/mcp/remote/register-tools.d.ts +26 -0
- package/dist/mcp/remote/register-tools.js +751 -0
- package/dist/mcp/remote/register-tools.js.map +1 -0
- package/dist/mcp/remote/rest-client.d.ts +66 -0
- package/dist/mcp/remote/rest-client.js +300 -0
- package/dist/mcp/remote/rest-client.js.map +1 -0
- package/dist/mcp/resources/events.d.ts +28 -0
- package/dist/mcp/resources/events.js +98 -0
- package/dist/mcp/resources/events.js.map +1 -0
- package/dist/mcp/server.d.ts +59 -0
- package/dist/mcp/server.js +72 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/comment-tools.d.ts +12 -0
- package/dist/mcp/tools/comment-tools.js +115 -0
- package/dist/mcp/tools/comment-tools.js.map +1 -0
- package/dist/mcp/tools/dependency-tools.d.ts +3 -0
- package/dist/mcp/tools/dependency-tools.js +91 -0
- package/dist/mcp/tools/dependency-tools.js.map +1 -0
- package/dist/mcp/tools/health-tools.d.ts +9 -0
- package/dist/mcp/tools/health-tools.js +82 -0
- package/dist/mcp/tools/health-tools.js.map +1 -0
- package/dist/mcp/tools/project-tools.d.ts +13 -0
- package/dist/mcp/tools/project-tools.js +167 -0
- package/dist/mcp/tools/project-tools.js.map +1 -0
- package/dist/mcp/tools/task-tools.d.ts +41 -0
- package/dist/mcp/tools/task-tools.js +434 -0
- package/dist/mcp/tools/task-tools.js.map +1 -0
- package/dist/mcp/tools/topology-tools.d.ts +14 -0
- package/dist/mcp/tools/topology-tools.js +46 -0
- package/dist/mcp/tools/topology-tools.js.map +1 -0
- package/dist/repositories/api-token.repository.d.ts +40 -0
- package/dist/repositories/api-token.repository.js +63 -0
- package/dist/repositories/api-token.repository.js.map +1 -0
- package/dist/repositories/comment.repository.d.ts +17 -0
- package/dist/repositories/comment.repository.js +73 -0
- package/dist/repositories/comment.repository.js.map +1 -0
- package/dist/repositories/dependency.repository.d.ts +19 -0
- package/dist/repositories/dependency.repository.js +55 -0
- package/dist/repositories/dependency.repository.js.map +1 -0
- package/dist/repositories/errors.d.ts +29 -0
- package/dist/repositories/errors.js +48 -0
- package/dist/repositories/errors.js.map +1 -0
- package/dist/repositories/interfaces.d.ts +200 -0
- package/dist/repositories/interfaces.js +2 -0
- package/dist/repositories/interfaces.js.map +1 -0
- package/dist/repositories/project.repository.d.ts +21 -0
- package/dist/repositories/project.repository.js +97 -0
- package/dist/repositories/project.repository.js.map +1 -0
- package/dist/repositories/row-mapper.d.ts +40 -0
- package/dist/repositories/row-mapper.js +38 -0
- package/dist/repositories/row-mapper.js.map +1 -0
- package/dist/repositories/task.repository.d.ts +45 -0
- package/dist/repositories/task.repository.js +612 -0
- package/dist/repositories/task.repository.js.map +1 -0
- package/dist/repositories/types.d.ts +20 -0
- package/dist/repositories/types.js +11 -0
- package/dist/repositories/types.js.map +1 -0
- package/dist/repositories/user.repository.d.ts +121 -0
- package/dist/repositories/user.repository.js +209 -0
- package/dist/repositories/user.repository.js.map +1 -0
- package/dist/schemas/comment.schema.d.ts +24 -0
- package/dist/schemas/comment.schema.js +27 -0
- package/dist/schemas/comment.schema.js.map +1 -0
- package/dist/schemas/dependency-graph.schema.d.ts +181 -0
- package/dist/schemas/dependency-graph.schema.js +98 -0
- package/dist/schemas/dependency-graph.schema.js.map +1 -0
- package/dist/schemas/dependency.schema.d.ts +9 -0
- package/dist/schemas/dependency.schema.js +16 -0
- package/dist/schemas/dependency.schema.js.map +1 -0
- package/dist/schemas/idempotency.schema.d.ts +18 -0
- package/dist/schemas/idempotency.schema.js +22 -0
- package/dist/schemas/idempotency.schema.js.map +1 -0
- package/dist/schemas/task.schema.d.ts +369 -0
- package/dist/schemas/task.schema.js +276 -0
- package/dist/schemas/task.schema.js.map +1 -0
- package/dist/schemas/topology.schema.d.ts +56 -0
- package/dist/schemas/topology.schema.js +48 -0
- package/dist/schemas/topology.schema.js.map +1 -0
- package/dist/services/auth-audit.d.ts +46 -0
- package/dist/services/auth-audit.js +28 -0
- package/dist/services/auth-audit.js.map +1 -0
- package/dist/services/claim-release.service.d.ts +42 -0
- package/dist/services/claim-release.service.js +90 -0
- package/dist/services/claim-release.service.js.map +1 -0
- package/dist/services/comment.service.d.ts +44 -0
- package/dist/services/comment.service.js +96 -0
- package/dist/services/comment.service.js.map +1 -0
- package/dist/services/dependency-graph.service.d.ts +33 -0
- package/dist/services/dependency-graph.service.js +453 -0
- package/dist/services/dependency-graph.service.js.map +1 -0
- package/dist/services/dependency.service.d.ts +32 -0
- package/dist/services/dependency.service.js +79 -0
- package/dist/services/dependency.service.js.map +1 -0
- package/dist/services/device-flow-store.d.ts +155 -0
- package/dist/services/device-flow-store.js +323 -0
- package/dist/services/device-flow-store.js.map +1 -0
- package/dist/services/errors.d.ts +28 -0
- package/dist/services/errors.js +44 -0
- package/dist/services/errors.js.map +1 -0
- package/dist/services/idempotency.service.d.ts +37 -0
- package/dist/services/idempotency.service.js +54 -0
- package/dist/services/idempotency.service.js.map +1 -0
- package/dist/services/identity-seeder.d.ts +56 -0
- package/dist/services/identity-seeder.js +131 -0
- package/dist/services/identity-seeder.js.map +1 -0
- package/dist/services/oidc-boot.d.ts +73 -0
- package/dist/services/oidc-boot.js +66 -0
- package/dist/services/oidc-boot.js.map +1 -0
- package/dist/services/oidc-client.d.ts +99 -0
- package/dist/services/oidc-client.js +108 -0
- package/dist/services/oidc-client.js.map +1 -0
- package/dist/services/pat-hash.d.ts +23 -0
- package/dist/services/pat-hash.js +73 -0
- package/dist/services/pat-hash.js.map +1 -0
- package/dist/services/pat-touch-debounce.d.ts +65 -0
- package/dist/services/pat-touch-debounce.js +82 -0
- package/dist/services/pat-touch-debounce.js.map +1 -0
- package/dist/services/project.service.d.ts +41 -0
- package/dist/services/project.service.js +133 -0
- package/dist/services/project.service.js.map +1 -0
- package/dist/services/slack.service.d.ts +31 -0
- package/dist/services/slack.service.js +52 -0
- package/dist/services/slack.service.js.map +1 -0
- package/dist/services/task.service.d.ts +151 -0
- package/dist/services/task.service.js +425 -0
- package/dist/services/task.service.js.map +1 -0
- package/dist/services/topology.service.d.ts +65 -0
- package/dist/services/topology.service.js +170 -0
- package/dist/services/topology.service.js.map +1 -0
- package/dist/services/user-upsert.d.ts +43 -0
- package/dist/services/user-upsert.js +53 -0
- package/dist/services/user-upsert.js.map +1 -0
- package/dist/services/workflow-engine.d.ts +93 -0
- package/dist/services/workflow-engine.js +250 -0
- package/dist/services/workflow-engine.js.map +1 -0
- package/dist/slack/commands/tasks-command.d.ts +88 -0
- package/dist/slack/commands/tasks-command.js +920 -0
- package/dist/slack/commands/tasks-command.js.map +1 -0
- package/dist/slack/formatters/project-formatter.d.ts +19 -0
- package/dist/slack/formatters/project-formatter.js +94 -0
- package/dist/slack/formatters/project-formatter.js.map +1 -0
- package/dist/slack/notifier.d.ts +41 -0
- package/dist/slack/notifier.js +111 -0
- package/dist/slack/notifier.js.map +1 -0
- package/dist/slack/repositories/channel-subscription.repository.d.ts +25 -0
- package/dist/slack/repositories/channel-subscription.repository.js +51 -0
- package/dist/slack/repositories/channel-subscription.repository.js.map +1 -0
- package/dist/slack/task-formatter.d.ts +31 -0
- package/dist/slack/task-formatter.js +151 -0
- package/dist/slack/task-formatter.js.map +1 -0
- package/dist/slack/user-identity.d.ts +37 -0
- package/dist/slack/user-identity.js +70 -0
- package/dist/slack/user-identity.js.map +1 -0
- package/dist/types/identity.d.ts +84 -0
- package/dist/types/identity.js +6 -0
- package/dist/types/identity.js.map +1 -0
- package/dist/types/task.d.ts +202 -0
- package/dist/types/task.js +17 -0
- package/dist/types/task.js.map +1 -0
- package/dist/utils/cycle-detector.d.ts +25 -0
- package/dist/utils/cycle-detector.js +86 -0
- package/dist/utils/cycle-detector.js.map +1 -0
- package/dist/utils/exit-codes.d.ts +64 -0
- package/dist/utils/exit-codes.js +57 -0
- package/dist/utils/exit-codes.js.map +1 -0
- package/dist/utils/is-main.d.ts +12 -0
- package/dist/utils/is-main.js +24 -0
- package/dist/utils/is-main.js.map +1 -0
- package/dist/utils/version.d.ts +1 -0
- package/dist/utils/version.js +22 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/web/html.d.ts +73 -0
- package/dist/web/html.js +154 -0
- package/dist/web/html.js.map +1 -0
- package/dist/web/pages/device.d.ts +19 -0
- package/dist/web/pages/device.js +76 -0
- package/dist/web/pages/device.js.map +1 -0
- package/dist/web/pages/error.d.ts +6 -0
- package/dist/web/pages/error.js +23 -0
- package/dist/web/pages/error.js.map +1 -0
- package/dist/web/pages/login.d.ts +5 -0
- package/dist/web/pages/login.js +22 -0
- package/dist/web/pages/login.js.map +1 -0
- package/dist/web/pages/me.d.ts +9 -0
- package/dist/web/pages/me.js +37 -0
- package/dist/web/pages/me.js.map +1 -0
- package/dist/web/pages/tokens.d.ts +20 -0
- package/dist/web/pages/tokens.js +89 -0
- package/dist/web/pages/tokens.js.map +1 -0
- package/dist/web/session-constants.d.ts +21 -0
- package/dist/web/session-constants.js +22 -0
- package/dist/web/session-constants.js.map +1 -0
- package/dist/web/session-flash.d.ts +15 -0
- package/dist/web/session-flash.js +11 -0
- package/dist/web/session-flash.js.map +1 -0
- package/dist/web/session-user.d.ts +59 -0
- package/dist/web/session-user.js +44 -0
- package/dist/web/session-user.js.map +1 -0
- package/docs/AGENT_CONTEXT.md +280 -0
- package/docs/README.md +49 -0
- package/llms.txt +33 -0
- package/package.json +129 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-tools.js","sourceRoot":"","sources":["../../../src/mcp/remote/register-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { TaskResponse, CreateTaskInput, UpdateTaskInput, TaskFilters, ProjectResponse, CreateProjectInput, UpdateProjectInput, DependencyResponse, DependencyListResponse, CreateDependencyInput, CommentResponse, CreateCommentInput, HealthResponse, PaginatedResponse, PaginationParams, CompletionReportInput, CompletionReportResponse } from '../../cli/api/types.js';
|
|
2
|
+
import type { TopologyReport } from '../../schemas/topology.schema.js';
|
|
3
|
+
/**
|
|
4
|
+
* REST API client for the remote MCP server.
|
|
5
|
+
*
|
|
6
|
+
* Wraps HTTP calls to the Wood Fired Tasks REST API.
|
|
7
|
+
* Uses native fetch (Node 18+) with a 10-second timeout. The auth header
|
|
8
|
+
* is chosen based on the apiKey prefix (Phase 31 Plan 03 Task 3, MCP-01):
|
|
9
|
+
*
|
|
10
|
+
* - apiKey starts with `wft_pat_` → `Authorization: Bearer <apiKey>`
|
|
11
|
+
* (PAT path; the server's PAT strategy hashes the full string)
|
|
12
|
+
* - any other apiKey → `X-API-Key: <apiKey>` (legacy path)
|
|
13
|
+
*
|
|
14
|
+
* Headers are mutually exclusive so the server's auth chain never has to
|
|
15
|
+
* pick between two strategies for the same request.
|
|
16
|
+
*/
|
|
17
|
+
export declare class RestClient {
|
|
18
|
+
private readonly baseUrl;
|
|
19
|
+
private readonly apiKey;
|
|
20
|
+
constructor(baseUrl: string, apiKey: string);
|
|
21
|
+
/**
|
|
22
|
+
* Internal HTTP request helper with authentication, timeout, and error handling.
|
|
23
|
+
*/
|
|
24
|
+
private request;
|
|
25
|
+
createTask(data: CreateTaskInput): Promise<TaskResponse>;
|
|
26
|
+
getTask(id: number): Promise<TaskResponse>;
|
|
27
|
+
updateTask(id: number, data: UpdateTaskInput): Promise<TaskResponse>;
|
|
28
|
+
listTasks(filters?: TaskFilters): Promise<TaskResponse[]>;
|
|
29
|
+
listTasksPaginated(filters?: TaskFilters): Promise<PaginatedResponse<TaskResponse>>;
|
|
30
|
+
deleteTask(id: number): Promise<void>;
|
|
31
|
+
claimTask(taskId: number, assignee: string): Promise<TaskResponse>;
|
|
32
|
+
getSubtasks(parentTaskId: number, pagination?: PaginationParams): Promise<TaskResponse[]>;
|
|
33
|
+
getSubtasksPaginated(parentTaskId: number, pagination?: PaginationParams): Promise<PaginatedResponse<TaskResponse>>;
|
|
34
|
+
createProject(data: CreateProjectInput): Promise<ProjectResponse>;
|
|
35
|
+
getProject(id: number): Promise<ProjectResponse>;
|
|
36
|
+
updateProject(id: number, data: UpdateProjectInput): Promise<ProjectResponse>;
|
|
37
|
+
listProjects(pagination?: PaginationParams): Promise<ProjectResponse[]>;
|
|
38
|
+
listProjectsPaginated(pagination?: PaginationParams): Promise<PaginatedResponse<ProjectResponse>>;
|
|
39
|
+
deleteProject(id: number): Promise<void>;
|
|
40
|
+
addDependency(taskId: number, data: CreateDependencyInput): Promise<DependencyResponse>;
|
|
41
|
+
removeDependency(taskId: number, blocksTaskId: number): Promise<void>;
|
|
42
|
+
getDependencies(taskId: number): Promise<DependencyListResponse>;
|
|
43
|
+
addComment(taskId: number, data: CreateCommentInput): Promise<CommentResponse>;
|
|
44
|
+
getComments(taskId: number, pagination?: PaginationParams): Promise<CommentResponse[]>;
|
|
45
|
+
getCommentsPaginated(taskId: number, pagination?: PaginationParams): Promise<PaginatedResponse<CommentResponse>>;
|
|
46
|
+
deleteComment(taskId: number, commentId: number): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Fetch a completion report from `GET /api/v1/tasks/completion-report`.
|
|
49
|
+
*
|
|
50
|
+
* Caller supplies EITHER `days` (trailing window, 1-365) OR an explicit
|
|
51
|
+
* `start`+`end` ISO8601 pair. Optional `project_id` and `assignee` filters
|
|
52
|
+
* narrow the result set. The server-side schema enforces these invariants
|
|
53
|
+
* and returns a 400 with a sanitized validation error on misuse.
|
|
54
|
+
*/
|
|
55
|
+
getCompletionReport(input: CompletionReportInput): Promise<CompletionReportResponse>;
|
|
56
|
+
/**
|
|
57
|
+
* Classify a project's dependency topology via
|
|
58
|
+
* `GET /api/v1/projects/:id/topology`.
|
|
59
|
+
*
|
|
60
|
+
* Returns the same `TopologyReport` shape the stdio MCP `topology_check`
|
|
61
|
+
* tool emits (topology, edges, roots, leaves, advisory) so the remote
|
|
62
|
+
* proxy tool is transport-indistinguishable from the local one.
|
|
63
|
+
*/
|
|
64
|
+
getTopology(projectId: number): Promise<TopologyReport>;
|
|
65
|
+
checkHealth(): Promise<HealthResponse>;
|
|
66
|
+
}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
function asPage(payload) {
|
|
2
|
+
if (Array.isArray(payload)) {
|
|
3
|
+
return { data: payload, total: payload.length, limit: payload.length, offset: 0 };
|
|
4
|
+
}
|
|
5
|
+
if (payload && typeof payload === 'object' && Array.isArray(payload.data)) {
|
|
6
|
+
return payload;
|
|
7
|
+
}
|
|
8
|
+
return { data: [], total: 0, limit: 0, offset: 0 };
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Literal PAT prefix shared with `src/services/pat-hash.ts`. Duplicated
|
|
12
|
+
* here as a constant so the remote MCP package doesn't drag in the
|
|
13
|
+
* server-side PAT helpers (the rest-client must stay importable from a
|
|
14
|
+
* minimal stdio subprocess).
|
|
15
|
+
*/
|
|
16
|
+
const PAT_PREFIX = 'wft_pat_';
|
|
17
|
+
/**
|
|
18
|
+
* REST API client for the remote MCP server.
|
|
19
|
+
*
|
|
20
|
+
* Wraps HTTP calls to the Wood Fired Tasks REST API.
|
|
21
|
+
* Uses native fetch (Node 18+) with a 10-second timeout. The auth header
|
|
22
|
+
* is chosen based on the apiKey prefix (Phase 31 Plan 03 Task 3, MCP-01):
|
|
23
|
+
*
|
|
24
|
+
* - apiKey starts with `wft_pat_` → `Authorization: Bearer <apiKey>`
|
|
25
|
+
* (PAT path; the server's PAT strategy hashes the full string)
|
|
26
|
+
* - any other apiKey → `X-API-Key: <apiKey>` (legacy path)
|
|
27
|
+
*
|
|
28
|
+
* Headers are mutually exclusive so the server's auth chain never has to
|
|
29
|
+
* pick between two strategies for the same request.
|
|
30
|
+
*/
|
|
31
|
+
export class RestClient {
|
|
32
|
+
baseUrl;
|
|
33
|
+
apiKey;
|
|
34
|
+
constructor(baseUrl, apiKey) {
|
|
35
|
+
// Strip trailing slash for consistent URL construction
|
|
36
|
+
this.baseUrl = baseUrl.replace(/\/$/, '');
|
|
37
|
+
this.apiKey = apiKey;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Internal HTTP request helper with authentication, timeout, and error handling.
|
|
41
|
+
*/
|
|
42
|
+
async request(endpoint, options) {
|
|
43
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
44
|
+
const controller = new AbortController();
|
|
45
|
+
const timeout = setTimeout(() => controller.abort(), 10000);
|
|
46
|
+
try {
|
|
47
|
+
const headers = {};
|
|
48
|
+
// Phase 31 Plan 03 Task 3 (MCP-01): switch header based on prefix.
|
|
49
|
+
// Mirrors the same precedence Phase 30 Plan 05 wired into the CLI
|
|
50
|
+
// client (`src/cli/api/client.ts`). The full apiKey value flows
|
|
51
|
+
// through verbatim — the server needs the entire `wft_pat_<body>`
|
|
52
|
+
// string for the SHA-256 lookup.
|
|
53
|
+
if (this.apiKey.startsWith(PAT_PREFIX)) {
|
|
54
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
headers['X-API-Key'] = this.apiKey;
|
|
58
|
+
}
|
|
59
|
+
if (options?.body) {
|
|
60
|
+
headers['Content-Type'] = 'application/json';
|
|
61
|
+
}
|
|
62
|
+
const response = await fetch(url, {
|
|
63
|
+
...options,
|
|
64
|
+
signal: controller.signal,
|
|
65
|
+
headers: {
|
|
66
|
+
...headers,
|
|
67
|
+
...options?.headers,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
if (!response.ok) {
|
|
71
|
+
let errorMessage;
|
|
72
|
+
try {
|
|
73
|
+
const body = await response.json();
|
|
74
|
+
errorMessage = body.message || body.error || `HTTP ${response.status}: ${response.statusText}`;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
|
78
|
+
}
|
|
79
|
+
throw new Error(`API request failed: ${errorMessage}`);
|
|
80
|
+
}
|
|
81
|
+
// 204 No Content has no body to parse
|
|
82
|
+
if (response.status === 204) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
return await response.json();
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
if (error instanceof TypeError && error.message.includes('fetch')) {
|
|
89
|
+
throw new Error(`Cannot reach API server at ${this.baseUrl}. Is it running?`);
|
|
90
|
+
}
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
clearTimeout(timeout);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// ── Task operations ──────────────────────────────────────────────────────
|
|
98
|
+
async createTask(data) {
|
|
99
|
+
return this.request('/api/v1/tasks', {
|
|
100
|
+
method: 'POST',
|
|
101
|
+
body: JSON.stringify(data),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async getTask(id) {
|
|
105
|
+
return this.request(`/api/v1/tasks/${id}`);
|
|
106
|
+
}
|
|
107
|
+
async updateTask(id, data) {
|
|
108
|
+
return this.request(`/api/v1/tasks/${id}`, {
|
|
109
|
+
method: 'PUT',
|
|
110
|
+
body: JSON.stringify(data),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
async listTasks(filters) {
|
|
114
|
+
const page = await this.listTasksPaginated(filters);
|
|
115
|
+
return page.data;
|
|
116
|
+
}
|
|
117
|
+
async listTasksPaginated(filters) {
|
|
118
|
+
let endpoint = '/api/v1/tasks';
|
|
119
|
+
if (filters) {
|
|
120
|
+
const params = new URLSearchParams();
|
|
121
|
+
Object.entries(filters).forEach(([key, value]) => {
|
|
122
|
+
if (value !== undefined) {
|
|
123
|
+
if (Array.isArray(value)) {
|
|
124
|
+
value.forEach((v) => params.append(key, String(v)));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
params.append(key, String(value));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
const queryString = params.toString();
|
|
132
|
+
if (queryString) {
|
|
133
|
+
endpoint += `?${queryString}`;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const payload = await this.request(endpoint);
|
|
137
|
+
return asPage(payload);
|
|
138
|
+
}
|
|
139
|
+
async deleteTask(id) {
|
|
140
|
+
await this.request(`/api/v1/tasks/${id}`, { method: 'DELETE' });
|
|
141
|
+
}
|
|
142
|
+
async claimTask(taskId, assignee) {
|
|
143
|
+
return this.request(`/api/v1/tasks/${taskId}/claim`, {
|
|
144
|
+
method: 'POST',
|
|
145
|
+
body: JSON.stringify({ assignee }),
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async getSubtasks(parentTaskId, pagination) {
|
|
149
|
+
const page = await this.getSubtasksPaginated(parentTaskId, pagination);
|
|
150
|
+
return page.data;
|
|
151
|
+
}
|
|
152
|
+
async getSubtasksPaginated(parentTaskId, pagination) {
|
|
153
|
+
let endpoint = `/api/v1/tasks/${parentTaskId}/subtasks`;
|
|
154
|
+
if (pagination) {
|
|
155
|
+
const params = new URLSearchParams();
|
|
156
|
+
if (pagination.limit !== undefined)
|
|
157
|
+
params.append('limit', String(pagination.limit));
|
|
158
|
+
if (pagination.offset !== undefined)
|
|
159
|
+
params.append('offset', String(pagination.offset));
|
|
160
|
+
const qs = params.toString();
|
|
161
|
+
if (qs)
|
|
162
|
+
endpoint += `?${qs}`;
|
|
163
|
+
}
|
|
164
|
+
const payload = await this.request(endpoint);
|
|
165
|
+
return asPage(payload);
|
|
166
|
+
}
|
|
167
|
+
// ── Project operations ───────────────────────────────────────────────────
|
|
168
|
+
async createProject(data) {
|
|
169
|
+
return this.request('/api/v1/projects', {
|
|
170
|
+
method: 'POST',
|
|
171
|
+
body: JSON.stringify(data),
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
async getProject(id) {
|
|
175
|
+
return this.request(`/api/v1/projects/${id}`);
|
|
176
|
+
}
|
|
177
|
+
async updateProject(id, data) {
|
|
178
|
+
return this.request(`/api/v1/projects/${id}`, {
|
|
179
|
+
method: 'PUT',
|
|
180
|
+
body: JSON.stringify(data),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
async listProjects(pagination) {
|
|
184
|
+
const page = await this.listProjectsPaginated(pagination);
|
|
185
|
+
return page.data;
|
|
186
|
+
}
|
|
187
|
+
async listProjectsPaginated(pagination) {
|
|
188
|
+
let endpoint = '/api/v1/projects';
|
|
189
|
+
if (pagination) {
|
|
190
|
+
const params = new URLSearchParams();
|
|
191
|
+
if (pagination.limit !== undefined)
|
|
192
|
+
params.append('limit', String(pagination.limit));
|
|
193
|
+
if (pagination.offset !== undefined)
|
|
194
|
+
params.append('offset', String(pagination.offset));
|
|
195
|
+
const qs = params.toString();
|
|
196
|
+
if (qs)
|
|
197
|
+
endpoint += `?${qs}`;
|
|
198
|
+
}
|
|
199
|
+
const payload = await this.request(endpoint);
|
|
200
|
+
return asPage(payload);
|
|
201
|
+
}
|
|
202
|
+
async deleteProject(id) {
|
|
203
|
+
await this.request(`/api/v1/projects/${id}`, { method: 'DELETE' });
|
|
204
|
+
}
|
|
205
|
+
// ── Dependency operations ────────────────────────────────────────────────
|
|
206
|
+
async addDependency(taskId, data) {
|
|
207
|
+
return this.request(`/api/v1/tasks/${taskId}/dependencies`, {
|
|
208
|
+
method: 'POST',
|
|
209
|
+
body: JSON.stringify(data),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
async removeDependency(taskId, blocksTaskId) {
|
|
213
|
+
await this.request(`/api/v1/tasks/${taskId}/dependencies/${blocksTaskId}`, {
|
|
214
|
+
method: 'DELETE',
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
async getDependencies(taskId) {
|
|
218
|
+
return this.request(`/api/v1/tasks/${taskId}/dependencies`);
|
|
219
|
+
}
|
|
220
|
+
// ── Comment operations ───────────────────────────────────────────────────
|
|
221
|
+
async addComment(taskId, data) {
|
|
222
|
+
return this.request(`/api/v1/tasks/${taskId}/comments`, {
|
|
223
|
+
method: 'POST',
|
|
224
|
+
body: JSON.stringify(data),
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
async getComments(taskId, pagination) {
|
|
228
|
+
const page = await this.getCommentsPaginated(taskId, pagination);
|
|
229
|
+
return page.data;
|
|
230
|
+
}
|
|
231
|
+
async getCommentsPaginated(taskId, pagination) {
|
|
232
|
+
let endpoint = `/api/v1/tasks/${taskId}/comments`;
|
|
233
|
+
if (pagination) {
|
|
234
|
+
const params = new URLSearchParams();
|
|
235
|
+
if (pagination.limit !== undefined)
|
|
236
|
+
params.append('limit', String(pagination.limit));
|
|
237
|
+
if (pagination.offset !== undefined)
|
|
238
|
+
params.append('offset', String(pagination.offset));
|
|
239
|
+
const qs = params.toString();
|
|
240
|
+
if (qs)
|
|
241
|
+
endpoint += `?${qs}`;
|
|
242
|
+
}
|
|
243
|
+
const payload = await this.request(endpoint);
|
|
244
|
+
return asPage(payload);
|
|
245
|
+
}
|
|
246
|
+
async deleteComment(taskId, commentId) {
|
|
247
|
+
await this.request(`/api/v1/tasks/${taskId}/comments/${commentId}`, {
|
|
248
|
+
method: 'DELETE',
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
// ── Completion report operations ─────────────────────────────────────────
|
|
252
|
+
/**
|
|
253
|
+
* Fetch a completion report from `GET /api/v1/tasks/completion-report`.
|
|
254
|
+
*
|
|
255
|
+
* Caller supplies EITHER `days` (trailing window, 1-365) OR an explicit
|
|
256
|
+
* `start`+`end` ISO8601 pair. Optional `project_id` and `assignee` filters
|
|
257
|
+
* narrow the result set. The server-side schema enforces these invariants
|
|
258
|
+
* and returns a 400 with a sanitized validation error on misuse.
|
|
259
|
+
*/
|
|
260
|
+
async getCompletionReport(input) {
|
|
261
|
+
const params = new URLSearchParams();
|
|
262
|
+
if (input.days !== undefined)
|
|
263
|
+
params.append('days', String(input.days));
|
|
264
|
+
if (input.start !== undefined)
|
|
265
|
+
params.append('start', input.start);
|
|
266
|
+
if (input.end !== undefined)
|
|
267
|
+
params.append('end', input.end);
|
|
268
|
+
if (input.project_id !== undefined) {
|
|
269
|
+
params.append('project_id', String(input.project_id));
|
|
270
|
+
}
|
|
271
|
+
if (input.assignee !== undefined)
|
|
272
|
+
params.append('assignee', input.assignee);
|
|
273
|
+
const qs = params.toString();
|
|
274
|
+
const endpoint = qs
|
|
275
|
+
? `/api/v1/tasks/completion-report?${qs}`
|
|
276
|
+
: '/api/v1/tasks/completion-report';
|
|
277
|
+
return this.request(endpoint);
|
|
278
|
+
}
|
|
279
|
+
// ── Topology operations ──────────────────────────────────────────────────
|
|
280
|
+
/**
|
|
281
|
+
* Classify a project's dependency topology via
|
|
282
|
+
* `GET /api/v1/projects/:id/topology`.
|
|
283
|
+
*
|
|
284
|
+
* Returns the same `TopologyReport` shape the stdio MCP `topology_check`
|
|
285
|
+
* tool emits (topology, edges, roots, leaves, advisory) so the remote
|
|
286
|
+
* proxy tool is transport-indistinguishable from the local one.
|
|
287
|
+
*/
|
|
288
|
+
async getTopology(projectId) {
|
|
289
|
+
return this.request(`/api/v1/projects/${projectId}/topology`);
|
|
290
|
+
}
|
|
291
|
+
// ── Health operations ────────────────────────────────────────────────────
|
|
292
|
+
async checkHealth() {
|
|
293
|
+
// Hit the AUTHENTICATED detailed endpoint so the response carries the DB
|
|
294
|
+
// path + fingerprint. The public /health is intentionally minimal (task
|
|
295
|
+
// #185); the remote client always sends X-API-Key, so the auth-gated
|
|
296
|
+
// /health/detailed is reachable here.
|
|
297
|
+
return this.request('/health/detailed');
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=rest-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest-client.js","sourceRoot":"","sources":["../../../src/mcp/remote/rest-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ReadResourceResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* MCP resource for event stream discovery
|
|
4
|
+
*
|
|
5
|
+
* Provides documentation about the SSE event stream endpoint,
|
|
6
|
+
* including authentication, filtering, event types, and reconnection.
|
|
7
|
+
*
|
|
8
|
+
* Design choice: Resource (not tool) because SSE streams are long-lived
|
|
9
|
+
* connections best accessed via external tools (curl, EventSource API).
|
|
10
|
+
* MCP resource provides discovery and documentation, not streaming.
|
|
11
|
+
*
|
|
12
|
+
* Addresses EVT-07: MCP resource access to event stream.
|
|
13
|
+
*/
|
|
14
|
+
export declare const EVENTS_RESOURCE_URI = "events://stream";
|
|
15
|
+
export declare const EVENTS_RESOURCE_NAME = "Event Stream";
|
|
16
|
+
export declare const EVENTS_RESOURCE_DESCRIPTION = "Real-time task and project event stream via Server-Sent Events";
|
|
17
|
+
/**
|
|
18
|
+
* Generate the event stream resource content with the configured API URL.
|
|
19
|
+
*
|
|
20
|
+
* Note: The API key is intentionally NOT embedded in the resource output.
|
|
21
|
+
* MCP resources surface to the LLM as context and end up in conversation
|
|
22
|
+
* history, prompt caches, and client-persisted transcripts. The markdown
|
|
23
|
+
* uses a `<your-api-key>` placeholder instead.
|
|
24
|
+
*
|
|
25
|
+
* @param apiUrl - Base URL for the API (e.g., http://localhost:3000/api/v1)
|
|
26
|
+
* @returns ReadResourceResult with markdown documentation
|
|
27
|
+
*/
|
|
28
|
+
export declare function getEventsResourceContent(apiUrl: string): ReadResourceResult;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP resource for event stream discovery
|
|
3
|
+
*
|
|
4
|
+
* Provides documentation about the SSE event stream endpoint,
|
|
5
|
+
* including authentication, filtering, event types, and reconnection.
|
|
6
|
+
*
|
|
7
|
+
* Design choice: Resource (not tool) because SSE streams are long-lived
|
|
8
|
+
* connections best accessed via external tools (curl, EventSource API).
|
|
9
|
+
* MCP resource provides discovery and documentation, not streaming.
|
|
10
|
+
*
|
|
11
|
+
* Addresses EVT-07: MCP resource access to event stream.
|
|
12
|
+
*/
|
|
13
|
+
export const EVENTS_RESOURCE_URI = 'events://stream';
|
|
14
|
+
export const EVENTS_RESOURCE_NAME = 'Event Stream';
|
|
15
|
+
export const EVENTS_RESOURCE_DESCRIPTION = 'Real-time task and project event stream via Server-Sent Events';
|
|
16
|
+
/**
|
|
17
|
+
* Generate the event stream resource content with the configured API URL.
|
|
18
|
+
*
|
|
19
|
+
* Note: The API key is intentionally NOT embedded in the resource output.
|
|
20
|
+
* MCP resources surface to the LLM as context and end up in conversation
|
|
21
|
+
* history, prompt caches, and client-persisted transcripts. The markdown
|
|
22
|
+
* uses a `<your-api-key>` placeholder instead.
|
|
23
|
+
*
|
|
24
|
+
* @param apiUrl - Base URL for the API (e.g., http://localhost:3000/api/v1)
|
|
25
|
+
* @returns ReadResourceResult with markdown documentation
|
|
26
|
+
*/
|
|
27
|
+
export function getEventsResourceContent(apiUrl) {
|
|
28
|
+
return {
|
|
29
|
+
contents: [
|
|
30
|
+
{
|
|
31
|
+
uri: EVENTS_RESOURCE_URI,
|
|
32
|
+
mimeType: 'text/markdown',
|
|
33
|
+
text: `# Event Stream
|
|
34
|
+
|
|
35
|
+
Subscribe to real-time task and project events via Server-Sent Events (SSE).
|
|
36
|
+
|
|
37
|
+
## Endpoint
|
|
38
|
+
|
|
39
|
+
\`\`\`
|
|
40
|
+
GET ${apiUrl}/events
|
|
41
|
+
\`\`\`
|
|
42
|
+
|
|
43
|
+
## Authentication
|
|
44
|
+
|
|
45
|
+
Include API key in header. Replace \`<your-api-key>\` with the value you configured in \`WFT_API_KEY\` (or \`API_KEYS\` for local stdio).
|
|
46
|
+
\`\`\`
|
|
47
|
+
X-API-Key: <your-api-key>
|
|
48
|
+
\`\`\`
|
|
49
|
+
|
|
50
|
+
## Query Parameters
|
|
51
|
+
|
|
52
|
+
- \`project_id\` (optional): Filter events to specific project
|
|
53
|
+
- \`event_types\` (optional): Comma-separated list of event types (e.g., "task.created,task.updated")
|
|
54
|
+
|
|
55
|
+
## Event Types
|
|
56
|
+
|
|
57
|
+
- \`task.created\` - New task created
|
|
58
|
+
- \`task.updated\` - Task updated
|
|
59
|
+
- \`task.deleted\` - Task deleted
|
|
60
|
+
- \`task.claimed\` - Task claimed by agent (Phase 15)
|
|
61
|
+
- \`task.status_changed\` - Task status transition
|
|
62
|
+
- \`project.created\` - New project created
|
|
63
|
+
- \`project.updated\` - Project updated
|
|
64
|
+
- \`project.deleted\` - Project deleted
|
|
65
|
+
- \`ping\` - Heartbeat (every 30 seconds)
|
|
66
|
+
|
|
67
|
+
## Reconnection
|
|
68
|
+
|
|
69
|
+
Include \`Last-Event-ID\` header to resume stream from specific event:
|
|
70
|
+
\`\`\`
|
|
71
|
+
Last-Event-ID: 42
|
|
72
|
+
\`\`\`
|
|
73
|
+
|
|
74
|
+
Server replays missed events from buffer (up to 1000 events or 5-minute window).
|
|
75
|
+
|
|
76
|
+
## Example with curl
|
|
77
|
+
|
|
78
|
+
Replace \`<your-api-key>\` with the value you configured in \`WFT_API_KEY\` (or \`API_KEYS\` for local stdio).
|
|
79
|
+
|
|
80
|
+
\`\`\`bash
|
|
81
|
+
curl -N -H "X-API-Key: <your-api-key>" "${apiUrl}/events?project_id=1&event_types=task.created,task.updated"
|
|
82
|
+
\`\`\`
|
|
83
|
+
|
|
84
|
+
## Event Format
|
|
85
|
+
|
|
86
|
+
Each event follows SSE protocol:
|
|
87
|
+
\`\`\`
|
|
88
|
+
id: 123
|
|
89
|
+
event: task.created
|
|
90
|
+
data: {"eventType":"task.created","timestamp":"2026-02-14T12:00:00Z","data":{...},"metadata":{...}}
|
|
91
|
+
|
|
92
|
+
\`\`\`
|
|
93
|
+
`,
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/mcp/resources/events.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,2BAA2B,GACtC,gEAAgE,CAAC;AAEnE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,mBAAmB;gBACxB,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE;;;;;;;MAOR,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CAyC8B,MAAM;;;;;;;;;;;;CAY/C;aACM;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { Database } from 'better-sqlite3';
|
|
3
|
+
import { TaskService } from '../services/task.service.js';
|
|
4
|
+
import { ProjectService } from '../services/project.service.js';
|
|
5
|
+
import { DependencyService } from '../services/dependency.service.js';
|
|
6
|
+
import { CommentService } from '../services/comment.service.js';
|
|
7
|
+
import { TopologyService } from '../services/topology.service.js';
|
|
8
|
+
import type { UserRepository } from '../repositories/user.repository.js';
|
|
9
|
+
/**
|
|
10
|
+
* Boot-time context for MCP tool handlers (Phase 31 Plan 03).
|
|
11
|
+
*
|
|
12
|
+
* Threaded into every `register*Tools` call so handlers can inject the
|
|
13
|
+
* resolved actor `user.id` into service-write input objects (the parallel
|
|
14
|
+
* FK columns introduced by migration 009).
|
|
15
|
+
*
|
|
16
|
+
* Defaults to `actorUserId: null` for callers that haven't been updated
|
|
17
|
+
* yet (tests that pre-date Phase 31). Tool handlers treat `null` as "no
|
|
18
|
+
* actor" and write the FK column as NULL, preserving today's behaviour
|
|
19
|
+
* for the still-legacy column-only paths.
|
|
20
|
+
*/
|
|
21
|
+
export interface McpServerContext {
|
|
22
|
+
/** Resolved user.id for the MCP actor; see src/mcp/identity-resolution.ts. */
|
|
23
|
+
actorUserId: number | null;
|
|
24
|
+
/**
|
|
25
|
+
* Optional UserRepository used by the update_task tool to best-effort
|
|
26
|
+
* resolve `assignee_user_id` from a user-supplied `assignee` email
|
|
27
|
+
* (mirroring the REST PATCH helper from Plan 31-02). Omit when callers
|
|
28
|
+
* don't care about assignee FK resolution (tests, future remote
|
|
29
|
+
* adapters); the handler then leaves the FK column NULL on assignee
|
|
30
|
+
* changes.
|
|
31
|
+
*/
|
|
32
|
+
userRepository?: UserRepository;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create and configure an MCP server instance
|
|
36
|
+
*
|
|
37
|
+
* Factory function that creates an McpServer with 22 tools and 1 resource:
|
|
38
|
+
* - 9 task tools (create, get, update, list, delete, claim, list_subtasks, completion_report, get_subtasks)
|
|
39
|
+
* - 5 project tools (create, get, update, list, delete)
|
|
40
|
+
* - 3 dependency tools (add, remove, list)
|
|
41
|
+
* - 3 comment tools (add, list, delete)
|
|
42
|
+
* - 1 health tool (check_health)
|
|
43
|
+
* - 1 topology tool (topology_check) — Wave 4.1 (#318), only registered when topologyService is provided
|
|
44
|
+
* - 1 resource (events://stream - SSE event stream discovery)
|
|
45
|
+
*
|
|
46
|
+
* This pattern allows tests to instantiate servers without stdio transport.
|
|
47
|
+
*
|
|
48
|
+
* @param taskService - Service for task operations
|
|
49
|
+
* @param projectService - Service for project operations
|
|
50
|
+
* @param dependencyService - Service for dependency operations
|
|
51
|
+
* @param commentService - Service for comment operations
|
|
52
|
+
* @param db - Database instance for health checks
|
|
53
|
+
* @param ctx - Phase 31 Plan 03: boot-time identity context. Tool handlers
|
|
54
|
+
* inject `ctx.actorUserId` into service-write input objects. Defaults to
|
|
55
|
+
* `{ actorUserId: null }` so existing tests that don't pass an explicit
|
|
56
|
+
* context continue to work — FK columns simply stay NULL for those calls.
|
|
57
|
+
* @returns Configured McpServer instance ready to connect to a transport
|
|
58
|
+
*/
|
|
59
|
+
export declare function createMcpServer(taskService: TaskService, projectService: ProjectService, dependencyService: DependencyService, commentService: CommentService, db: Database, ctx?: McpServerContext, topologyService?: TopologyService): McpServer;
|