@entelligentsia/forgecli 0.7.9 → 0.7.10
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/CHANGELOG.md +19 -0
- package/dist/CHANGELOG-forge-plugin.md +26 -0
- package/dist/bin/argv.d.ts +2 -2
- package/dist/bin/argv.js +12 -3
- package/dist/bin/argv.js.map +1 -1
- package/dist/bin/doctor.d.ts +59 -0
- package/dist/bin/doctor.js +149 -0
- package/dist/bin/doctor.js.map +1 -0
- package/dist/bin/forge.js +13 -0
- package/dist/bin/forge.js.map +1 -1
- package/dist/extensions/forgecli/fix-bug.js +35 -110
- package/dist/extensions/forgecli/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/index.js +28 -0
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/review-command.d.ts +2 -0
- package/dist/extensions/forgecli/review-command.js +184 -0
- package/dist/extensions/forgecli/review-command.js.map +1 -0
- package/dist/extensions/forgecli/run-sprint.js +10 -0
- package/dist/extensions/forgecli/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/run-task.d.ts +1 -7
- package/dist/extensions/forgecli/run-task.js +30 -142
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/session-registry.d.ts +68 -0
- package/dist/extensions/forgecli/session-registry.js +61 -0
- package/dist/extensions/forgecli/session-registry.js.map +1 -1
- package/dist/extensions/forgecli/thread-switcher.js +128 -9
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
- package/dist/extensions/forgecli/viewport-events.d.ts +74 -0
- package/dist/extensions/forgecli/viewport-events.js +184 -0
- package/dist/extensions/forgecli/viewport-events.js.map +1 -0
- package/dist/extensions/forgecli/viewport-renderer.d.ts +55 -0
- package/dist/extensions/forgecli/viewport-renderer.js +204 -0
- package/dist/extensions/forgecli/viewport-renderer.js.map +1 -0
- package/dist/extensions/forgecli/viewport-theme.d.ts +11 -0
- package/dist/extensions/forgecli/viewport-theme.js +124 -0
- package/dist/extensions/forgecli/viewport-theme.js.map +1 -0
- package/dist/forge-payload/.base-pack/workflows/_fragments/store-cli-verbs.md +18 -2
- package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +21 -14
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.tools/banners.cjs +435 -0
- package/dist/forge-payload/.tools/build-context-pack.cjs +290 -0
- package/dist/forge-payload/.tools/build-init-context.cjs +322 -0
- package/dist/forge-payload/.tools/build-overlay.cjs +326 -0
- package/dist/forge-payload/.tools/build-persona-pack.cjs +226 -0
- package/dist/forge-payload/.tools/collate.cjs +1041 -0
- package/dist/forge-payload/.tools/generation-manifest.cjs +311 -0
- package/dist/forge-payload/.tools/lib/forge-root.cjs +59 -0
- package/dist/forge-payload/.tools/lib/paths.cjs +29 -0
- package/dist/forge-payload/.tools/lib/pricing.cjs +165 -0
- package/dist/forge-payload/.tools/lib/project-root.cjs +32 -0
- package/dist/forge-payload/.tools/lib/result.js +40 -0
- package/dist/forge-payload/.tools/lib/store-facade.cjs +162 -0
- package/dist/forge-payload/.tools/lib/store-nlp.cjs +250 -0
- package/dist/forge-payload/.tools/lib/store-query-exec.cjs +272 -0
- package/dist/forge-payload/.tools/lib/validate.js +141 -0
- package/dist/forge-payload/.tools/manage-config.cjs +340 -0
- package/dist/forge-payload/.tools/manage-versions.cjs +365 -0
- package/dist/forge-payload/.tools/package.json +3 -0
- package/dist/forge-payload/.tools/parse-gates.cjs +151 -0
- package/dist/forge-payload/.tools/parse-verdict.cjs +67 -0
- package/dist/forge-payload/.tools/preflight-gate.cjs +350 -0
- package/dist/forge-payload/.tools/prompts/sprint-plan-prompt.md +70 -0
- package/dist/forge-payload/.tools/schemas/task-list.schema.json +53 -0
- package/dist/forge-payload/.tools/seed-store.cjs +237 -0
- package/dist/forge-payload/.tools/store-cli.cjs +1226 -0
- package/dist/forge-payload/.tools/store-query.cjs +319 -0
- package/dist/forge-payload/.tools/store.cjs +315 -0
- package/dist/forge-payload/.tools/substitute-placeholders.cjs +625 -0
- package/dist/forge-payload/.tools/validate-store.cjs +593 -0
- package/dist/forge-payload/skills/refresh-kb-links/SKILL.md +217 -0
- package/dist/forge-payload/skills/store-custodian/SKILL.md +163 -0
- package/dist/forge-payload/skills/store-query-grammar/SKILL.md +145 -0
- package/dist/forge-payload/skills/store-query-nlp/SKILL.md +110 -0
- package/dist/forge-payload/tools/lib/suggest.cjs +211 -0
- package/dist/forge-payload/tools/lib/validate.js +12 -2
- package/dist/forge-payload/tools/store-cli.cjs +192 -18
- package/dist/forge-payload/tools/validate-store.cjs +22 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/endpoint/endpointResolver.js +2 -2
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/index.js +9 -13
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/runtimeConfig.browser.js +5 -5
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/runtimeConfig.js +2 -3
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/BedrockRuntimeClient.js +1 -4
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/endpoint/endpointResolver.js +1 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-es/runtimeExtensions.js +1 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/BedrockRuntimeClient.d.ts +1 -2
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/ts3.4/BedrockRuntimeClient.d.ts +5 -7
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/ts3.4/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/ts3.4/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/dist-types/ts3.4/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/package.json +11 -19
- package/node_modules/@aws-sdk/core/dist-cjs/index.js +4 -6
- package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.browser.js +595 -0
- package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +715 -0
- package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.native.js +588 -0
- package/node_modules/@aws-sdk/core/dist-es/index.js +3 -3
- package/node_modules/@aws-sdk/core/dist-es/submodules/client/index.browser.js +36 -0
- package/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js +26 -4
- package/node_modules/@aws-sdk/core/dist-es/submodules/client/index.native.js +37 -0
- package/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.browser.js +3 -0
- package/node_modules/@aws-sdk/{middleware-user-agent/dist-es → core/dist-es/submodules/client/middleware-user-agent}/check-features.js +1 -1
- package/node_modules/@aws-sdk/{middleware-user-agent/dist-es → core/dist-es/submodules/client/middleware-user-agent}/user-agent-middleware.js +1 -1
- package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/lib/aws/partition.js +1 -1
- package/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/partitions.js +1 -0
- package/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-browser/defaultUserAgent.browser.js +1 -0
- package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/nodeAppIdConfigOptions.js +1 -1
- package/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts +3 -2
- package/node_modules/@aws-sdk/core/dist-types/index.d.ts +12 -14
- package/node_modules/@aws-sdk/core/dist-types/submodules/client/index.browser.d.ts +47 -0
- package/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts +38 -4
- package/node_modules/@aws-sdk/core/dist-types/submodules/client/index.native.d.ts +48 -0
- package/node_modules/@aws-sdk/core/dist-types/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.d.ts +5 -0
- package/node_modules/@aws-sdk/core/dist-types/submodules/client/util-endpoints/lib/aws/partitions.d.ts +638 -0
- package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types → core/dist-types/submodules/client/util-user-agent-browser}/createUserAgentStringParsingProvider.d.ts +1 -1
- package/node_modules/@aws-sdk/core/dist-types/submodules/client/util-user-agent-browser/defaultUserAgent.browser.d.ts +1 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts +0 -2
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts +65 -3
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.browser.d.ts +116 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts +123 -4
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.native.d.ts +116 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.d.ts +4 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/lib/aws/partitions.d.ts +647 -0
- package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-browser}/createUserAgentStringParsingProvider.d.ts +1 -1
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-browser/defaultUserAgent.browser.d.ts +1 -0
- package/node_modules/@aws-sdk/core/package.json +27 -8
- package/node_modules/@aws-sdk/credential-provider-env/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-http/package.json +5 -5
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +11 -11
- package/node_modules/@aws-sdk/credential-provider-login/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-node/package.json +9 -9
- package/node_modules/@aws-sdk/credential-provider-process/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +5 -5
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +4 -4
- package/node_modules/@aws-sdk/eventstream-handler-node/package.json +2 -2
- package/node_modules/@aws-sdk/middleware-eventstream/package.json +2 -2
- package/node_modules/@aws-sdk/middleware-websocket/package.json +5 -5
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +13 -20
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +13 -20
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +13 -20
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +13 -20
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +14 -21
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentityClient.js +1 -4
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/endpointResolver.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeExtensions.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/SigninClient.js +1 -4
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeExtensions.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSOClient.js +1 -4
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeExtensions.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js +1 -4
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js +1 -4
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentityClient.d.ts +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/SigninClient.d.ts +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSOClient.d.ts +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STSClient.d.ts +1 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentityClient.d.ts +1 -3
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/SigninClient.d.ts +1 -3
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSOClient.d.ts +1 -3
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts +1 -3
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STSClient.d.ts +1 -3
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/package.json +6 -14
- package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +3 -3
- package/node_modules/@aws-sdk/token-providers/package.json +4 -4
- package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
- package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
- package/node_modules/@earendil-works/pi-ai/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +3 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +5 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package-lock.json +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package-lock.json +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/package.json +4 -4
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/node_modules/@smithy/core/package.json +2 -2
- package/node_modules/@smithy/credential-provider-imds/package.json +3 -3
- package/node_modules/@smithy/fetch-http-handler/package.json +4 -4
- package/node_modules/@smithy/node-http-handler/package.json +4 -4
- package/node_modules/@smithy/signature-v4/package.json +3 -3
- package/node_modules/@smithy/types/README.md +3 -3
- package/node_modules/@smithy/types/dist-types/abort.d.ts +4 -6
- package/node_modules/@smithy/types/dist-types/auth/auth.d.ts +6 -4
- package/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +7 -10
- package/node_modules/@smithy/types/dist-types/checksum.d.ts +4 -6
- package/node_modules/@smithy/types/dist-types/client.d.ts +8 -8
- package/node_modules/@smithy/types/dist-types/command.d.ts +2 -2
- package/node_modules/@smithy/types/dist-types/crypto.d.ts +6 -8
- package/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +6 -7
- package/node_modules/@smithy/types/dist-types/eventStream.d.ts +10 -10
- package/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +9 -10
- package/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +2 -2
- package/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +10 -10
- package/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +2 -2
- package/node_modules/@smithy/types/dist-types/http.d.ts +18 -21
- package/node_modules/@smithy/types/dist-types/logger.d.ts +2 -2
- package/node_modules/@smithy/types/dist-types/middleware.d.ts +28 -27
- package/node_modules/@smithy/types/dist-types/pagination.d.ts +4 -4
- package/node_modules/@smithy/types/dist-types/serde.d.ts +10 -10
- package/node_modules/@smithy/types/dist-types/shapes.d.ts +9 -12
- package/node_modules/@smithy/types/dist-types/signature.d.ts +4 -4
- package/node_modules/@smithy/types/dist-types/stream.d.ts +2 -2
- package/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +7 -11
- package/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +23 -29
- package/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +9 -19
- package/node_modules/@smithy/types/dist-types/transfer.d.ts +2 -1
- package/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +4 -4
- package/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +14 -18
- package/node_modules/@smithy/types/dist-types/transform/exact.d.ts +2 -2
- package/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +12 -12
- package/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +14 -9
- package/node_modules/@smithy/types/dist-types/uri.d.ts +2 -2
- package/node_modules/@smithy/types/dist-types/util.d.ts +28 -28
- package/node_modules/@smithy/types/package.json +1 -1
- package/node_modules/fast-xml-parser/CHANGELOG.md +7 -0
- package/node_modules/fast-xml-parser/README.md +0 -3
- package/node_modules/fast-xml-parser/lib/fxbuilder.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +1 -1
- package/node_modules/fast-xml-parser/lib/fxp.cjs +1 -1
- package/node_modules/fast-xml-parser/lib/fxp.d.cts +1 -0
- package/node_modules/fast-xml-parser/lib/fxp.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -1
- package/node_modules/fast-xml-parser/lib/fxparser.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -1
- package/node_modules/fast-xml-parser/package.json +2 -4
- package/node_modules/fast-xml-parser/src/fxp.d.ts +1 -0
- package/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +1 -1
- package/node_modules/fast-xml-parser/src/xmlparser/node2json.js +4 -0
- package/package.json +7 -7
- package/skills/refresh-kb-links/SKILL.md +217 -0
- package/skills/store-custodian/SKILL.md +163 -0
- package/skills/store-query-grammar/SKILL.md +145 -0
- package/skills/store-query-nlp/SKILL.md +110 -0
- package/node_modules/@aws-sdk/middleware-host-header/LICENSE +0 -201
- package/node_modules/@aws-sdk/middleware-host-header/README.md +0 -4
- package/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js +0 -41
- package/node_modules/@aws-sdk/middleware-host-header/package.json +0 -59
- package/node_modules/@aws-sdk/middleware-logger/LICENSE +0 -201
- package/node_modules/@aws-sdk/middleware-logger/README.md +0 -4
- package/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js +0 -48
- package/node_modules/@aws-sdk/middleware-logger/dist-es/index.js +0 -1
- package/node_modules/@aws-sdk/middleware-logger/dist-types/index.d.ts +0 -1
- package/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/index.d.ts +0 -1
- package/node_modules/@aws-sdk/middleware-logger/package.json +0 -59
- package/node_modules/@aws-sdk/middleware-recursion-detection/LICENSE +0 -201
- package/node_modules/@aws-sdk/middleware-recursion-detection/README.md +0 -17
- package/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js +0 -29
- package/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.browser.js +0 -5
- package/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js +0 -33
- package/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.native.js +0 -5
- package/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js +0 -2
- package/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/index.d.ts +0 -2
- package/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/index.d.ts +0 -2
- package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +0 -66
- package/node_modules/@aws-sdk/middleware-user-agent/LICENSE +0 -201
- package/node_modules/@aws-sdk/middleware-user-agent/README.md +0 -4
- package/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js +0 -194
- package/node_modules/@aws-sdk/middleware-user-agent/dist-es/index.js +0 -2
- package/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts +0 -2
- package/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/index.d.ts +0 -2
- package/node_modules/@aws-sdk/middleware-user-agent/package.json +0 -61
- package/node_modules/@aws-sdk/region-config-resolver/LICENSE +0 -201
- package/node_modules/@aws-sdk/region-config-resolver/README.md +0 -19
- package/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js +0 -38
- package/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.browser.js +0 -6
- package/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.js +0 -19
- package/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.native.js +0 -6
- package/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js +0 -3
- package/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts +0 -3
- package/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts +0 -3
- package/node_modules/@aws-sdk/region-config-resolver/package.json +0 -64
- package/node_modules/@aws-sdk/util-endpoints/LICENSE +0 -201
- package/node_modules/@aws-sdk/util-endpoints/README.md +0 -6
- package/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js +0 -406
- package/node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json +0 -267
- package/node_modules/@aws-sdk/util-endpoints/dist-es/index.js +0 -6
- package/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/index.js +0 -3
- package/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partitions.json +0 -267
- package/node_modules/@aws-sdk/util-endpoints/dist-es/types/index.js +0 -6
- package/node_modules/@aws-sdk/util-endpoints/dist-types/index.d.ts +0 -6
- package/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/index.d.ts +0 -3
- package/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/index.d.ts +0 -6
- package/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/index.d.ts +0 -3
- package/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/index.d.ts +0 -6
- package/node_modules/@aws-sdk/util-endpoints/dist-types/types/index.d.ts +0 -6
- package/node_modules/@aws-sdk/util-endpoints/package.json +0 -59
- package/node_modules/@aws-sdk/util-user-agent-browser/LICENSE +0 -201
- package/node_modules/@aws-sdk/util-user-agent-browser/README.md +0 -29
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/createUserAgentStringParsingProvider.js +0 -24
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.browser.js +0 -4
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js +0 -61
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js +0 -22
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.browser.js +0 -1
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.browser.d.ts +0 -1
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.browser.d.ts +0 -1
- package/node_modules/@aws-sdk/util-user-agent-browser/package.json +0 -60
- package/node_modules/@aws-sdk/util-user-agent-node/LICENSE +0 -201
- package/node_modules/@aws-sdk/util-user-agent-node/README.md +0 -17
- package/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js +0 -185
- package/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js +0 -2
- package/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts +0 -2
- package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts +0 -2
- package/node_modules/@aws-sdk/util-user-agent-node/package.json +0 -68
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts +0 -4
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js +0 -3
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts +0 -20
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js +0 -92
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts +0 -18
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js +0 -42
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts +0 -10
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js +0 -31
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts +0 -30
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js +0 -170
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts +0 -26
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js +0 -90
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js.map +0 -1
- package/skills/.gitkeep +0 -0
- /package/node_modules/@aws-sdk/{middleware-host-header/dist-es/index.js → core/dist-es/submodules/client/middleware-host-header/hostHeaderMiddleware.js} +0 -0
- /package/node_modules/@aws-sdk/{middleware-logger/dist-es → core/dist-es/submodules/client/middleware-logger}/loggerMiddleware.js +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-es → core/dist-es/submodules/client/middleware-recursion-detection}/configuration.js +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-es → core/dist-es/submodules/client/middleware-recursion-detection}/getRecursionDetectionPlugin.js +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-es → core/dist-es/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.browser.js +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-es → core/dist-es/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.js +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-es → core/dist-es/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.native.js +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-es → core/dist-es/submodules/client/middleware-user-agent}/configurations.js +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-es → core/dist-es/submodules/client/middleware-user-agent}/constants.js +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-es → core/dist-es/submodules/client/middleware-user-agent}/encode-features.js +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-es/regionConfig → core/dist-es/submodules/client/region-config-resolver}/awsRegionConfig.js +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-es/extensions/index.js → core/dist-es/submodules/client/region-config-resolver/extensions.js} +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-es/regionConfig → core/dist-es/submodules/client/region-config-resolver}/stsRegionDefaultResolver.browser.js +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-es/regionConfig → core/dist-es/submodules/client/region-config-resolver}/stsRegionDefaultResolver.js +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-es/regionConfig → core/dist-es/submodules/client/region-config-resolver}/stsRegionDefaultResolver.native.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/aws.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/lib/aws/isVirtualHostableS3Bucket.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/lib/aws/parseArn.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/lib/isIpAddress.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/resolveDefaultAwsRegionalEndpointsConfig.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/resolveEndpoint.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/EndpointError.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/EndpointRuleObject.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/ErrorRuleObject.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/RuleSetObject.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/TreeRuleObject.js +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-es → core/dist-es/submodules/client/util-endpoints}/types/shared.js +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-es → core/dist-es/submodules/client/util-user-agent-browser}/configurations.js +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-es → core/dist-es/submodules/client/util-user-agent-browser}/createUserAgentStringParsingProvider.js +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-es/index.js → core/dist-es/submodules/client/util-user-agent-browser/defaultUserAgent.js} +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-es/index.native.js → core/dist-es/submodules/client/util-user-agent-browser/defaultUserAgent.native.js} +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/crt-availability.js +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/defaultUserAgent.js +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/getNodeModulesParentDirs.js +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/getRuntimeUserAgentPair.js +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/getSanitizedDevTypeScriptVersion.js +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/getSanitizedTypeScriptVersion.js +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/getTypeScriptUserAgentPair.js +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-es → core/dist-es/submodules/client/util-user-agent-node}/is-crt-available.js +0 -0
- /package/node_modules/@aws-sdk/{middleware-host-header/dist-types/index.d.ts → core/dist-types/submodules/client/middleware-host-header/hostHeaderMiddleware.d.ts} +0 -0
- /package/node_modules/@aws-sdk/{middleware-logger/dist-types → core/dist-types/submodules/client/middleware-logger}/loggerMiddleware.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types → core/dist-types/submodules/client/middleware-recursion-detection}/configuration.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/getRecursionDetectionPlugin.d.ts → core/dist-types/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.browser.d.ts} +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types → core/dist-types/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.browser.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types → core/dist-types/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types → core/dist-types/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.native.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types → core/dist-types/submodules/client/middleware-user-agent}/check-features.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types → core/dist-types/submodules/client/middleware-user-agent}/configurations.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types → core/dist-types/submodules/client/middleware-user-agent}/constants.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types → core/dist-types/submodules/client/middleware-user-agent}/encode-features.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types → core/dist-types/submodules/client/middleware-user-agent}/user-agent-middleware.d.ts +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/regionConfig → core/dist-types/submodules/client/region-config-resolver}/awsRegionConfig.d.ts +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/extensions/index.d.ts → core/dist-types/submodules/client/region-config-resolver/extensions.d.ts} +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/regionConfig → core/dist-types/submodules/client/region-config-resolver}/stsRegionDefaultResolver.browser.d.ts +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/regionConfig → core/dist-types/submodules/client/region-config-resolver}/stsRegionDefaultResolver.d.ts +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/regionConfig → core/dist-types/submodules/client/region-config-resolver}/stsRegionDefaultResolver.native.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/aws.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/lib/aws/isVirtualHostableS3Bucket.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/lib/aws/parseArn.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/lib/aws/partition.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/lib/isIpAddress.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/resolveDefaultAwsRegionalEndpointsConfig.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/resolveEndpoint.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/submodules/client/util-endpoints}/types/EndpointError.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/types/EndpointRuleObject.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/submodules/client/util-endpoints}/types/ErrorRuleObject.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/types/RuleSetObject.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/submodules/client/util-endpoints}/types/TreeRuleObject.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/submodules/client/util-endpoints}/types/shared.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types → core/dist-types/submodules/client/util-user-agent-browser}/configurations.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/index.d.ts → core/dist-types/submodules/client/util-user-agent-browser/defaultUserAgent.d.ts} +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/index.native.d.ts → core/dist-types/submodules/client/util-user-agent-browser/defaultUserAgent.native.d.ts} +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/crt-availability.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/defaultUserAgent.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/getNodeModulesParentDirs.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/getRuntimeUserAgentPair.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/getSanitizedDevTypeScriptVersion.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/getSanitizedTypeScriptVersion.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/getTypeScriptUserAgentPair.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/is-crt-available.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types → core/dist-types/submodules/client/util-user-agent-node}/nodeAppIdConfigOptions.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-host-header/dist-types/ts3.4/index.d.ts → core/dist-types/ts3.4/submodules/client/middleware-host-header/hostHeaderMiddleware.d.ts} +0 -0
- /package/node_modules/@aws-sdk/{middleware-logger/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-logger}/loggerMiddleware.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-recursion-detection}/configuration.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts → core/dist-types/ts3.4/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.browser.d.ts} +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.browser.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-recursion-detection/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-recursion-detection}/recursionDetectionMiddleware.native.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-user-agent}/check-features.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-user-agent}/configurations.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-user-agent}/constants.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-user-agent}/encode-features.d.ts +0 -0
- /package/node_modules/@aws-sdk/{middleware-user-agent/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/middleware-user-agent}/user-agent-middleware.d.ts +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/regionConfig → core/dist-types/ts3.4/submodules/client/region-config-resolver}/awsRegionConfig.d.ts +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/extensions/index.d.ts → core/dist-types/ts3.4/submodules/client/region-config-resolver/extensions.d.ts} +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/regionConfig → core/dist-types/ts3.4/submodules/client/region-config-resolver}/stsRegionDefaultResolver.browser.d.ts +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/regionConfig → core/dist-types/ts3.4/submodules/client/region-config-resolver}/stsRegionDefaultResolver.d.ts +0 -0
- /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/regionConfig → core/dist-types/ts3.4/submodules/client/region-config-resolver}/stsRegionDefaultResolver.native.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/aws.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/lib/aws/isVirtualHostableS3Bucket.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/lib/aws/parseArn.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/lib/aws/partition.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/lib/isIpAddress.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/resolveDefaultAwsRegionalEndpointsConfig.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/resolveEndpoint.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/EndpointError.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/EndpointRuleObject.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/ErrorRuleObject.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/RuleSetObject.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/TreeRuleObject.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-endpoints/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-endpoints}/types/shared.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-browser}/configurations.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/ts3.4/index.d.ts → core/dist-types/ts3.4/submodules/client/util-user-agent-browser/defaultUserAgent.d.ts} +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-browser/dist-types/ts3.4/index.native.d.ts → core/dist-types/ts3.4/submodules/client/util-user-agent-browser/defaultUserAgent.native.d.ts} +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/crt-availability.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/defaultUserAgent.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/getNodeModulesParentDirs.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/getRuntimeUserAgentPair.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/getSanitizedDevTypeScriptVersion.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/getSanitizedTypeScriptVersion.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/getTypeScriptUserAgentPair.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/is-crt-available.d.ts +0 -0
- /package/node_modules/@aws-sdk/{util-user-agent-node/dist-types/ts3.4 → core/dist-types/ts3.4/submodules/client/util-user-agent-node}/nodeAppIdConfigOptions.d.ts +0 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// Vocab-drift detector + "Did you mean?" suggestion engine (FORGE-S22-T03)
|
|
4
|
+
//
|
|
5
|
+
// Provides Levenshtein-based fuzzy matching with a curated DRIFT_MAP for
|
|
6
|
+
// high-frequency agent misconception patterns that pure distance alone cannot
|
|
7
|
+
// resolve (e.g., "task" → "taskId", "completed" → "committed").
|
|
8
|
+
//
|
|
9
|
+
// Suggestion pipeline (apply in order):
|
|
10
|
+
// 1. Store original input
|
|
11
|
+
// 2. Normalize (underscores → hyphens)
|
|
12
|
+
// 3. Suppress if original exactly matches a valid candidate (true noise)
|
|
13
|
+
// 4. Normalization-hint: if normalized matches a candidate but original doesn't,
|
|
14
|
+
// suggest the normalized form (underscore→hyphen hint)
|
|
15
|
+
// 5. DRIFT_MAP exact match (after normalization), intersected with candidate pool
|
|
16
|
+
// 6. Levenshtein fallback (distance ≤ 2, max 3 suggestions)
|
|
17
|
+
// 7. Format as "(Did you mean ...?)" string
|
|
18
|
+
|
|
19
|
+
const MAX_CANDIDATES = 200;
|
|
20
|
+
const DEFAULT_MAX_DIST = 2;
|
|
21
|
+
const MAX_SUGGESTIONS = 3;
|
|
22
|
+
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Levenshtein distance
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Compute the Levenshtein distance between two strings.
|
|
29
|
+
* @param {string} a
|
|
30
|
+
* @param {string} b
|
|
31
|
+
* @returns {number}
|
|
32
|
+
*/
|
|
33
|
+
function levenshtein(a, b) {
|
|
34
|
+
if (a.length === 0) return b.length;
|
|
35
|
+
if (b.length === 0) return a.length;
|
|
36
|
+
|
|
37
|
+
// Swap so that the shorter string is b (reduces memory)
|
|
38
|
+
if (a.length < b.length) {
|
|
39
|
+
const tmp = a; a = b; b = tmp;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const prevRow = new Array(b.length + 1);
|
|
43
|
+
for (let j = 0; j <= b.length; j++) prevRow[j] = j;
|
|
44
|
+
|
|
45
|
+
for (let i = 1; i <= a.length; i++) {
|
|
46
|
+
const curRow = new Array(b.length + 1);
|
|
47
|
+
curRow[0] = i;
|
|
48
|
+
for (let j = 1; j <= b.length; j++) {
|
|
49
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
50
|
+
curRow[j] = Math.min(
|
|
51
|
+
curRow[j - 1] + 1, // insertion
|
|
52
|
+
prevRow[j] + 1, // deletion
|
|
53
|
+
prevRow[j - 1] + cost // substitution
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
// Copy curRow into prevRow for next iteration
|
|
57
|
+
for (let j = 0; j <= b.length; j++) prevRow[j] = curRow[j];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return prevRow[b.length];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// Normalization
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Normalize a string for matching: replace underscores with hyphens.
|
|
69
|
+
* @param {string} s
|
|
70
|
+
* @returns {string}
|
|
71
|
+
*/
|
|
72
|
+
function normalizeForMatch(s) {
|
|
73
|
+
return s.replace(/_/g, '-');
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// DRIFT_MAP
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Curated drift map for high-frequency agent misconceptions.
|
|
82
|
+
* Keys are *normalized* input strings; values are arrays of suggested targets.
|
|
83
|
+
* Targets are intersected against the candidate pool at suggest-time.
|
|
84
|
+
*/
|
|
85
|
+
const DRIFT_MAP = {
|
|
86
|
+
'task': ['taskId'],
|
|
87
|
+
'completed': ['committed'],
|
|
88
|
+
'in-progress': ['implementing'],
|
|
89
|
+
'timestamp': ['startTimestamp', 'endTimestamp'],
|
|
90
|
+
'task-completed': ['task-committed'],
|
|
91
|
+
'implemented': ['implementing'],
|
|
92
|
+
'set': ['set-summary'],
|
|
93
|
+
'start': ['startTimestamp']
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// suggest() — main suggestion pipeline
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Generate "Did you mean?" suggestions for an input string.
|
|
102
|
+
*
|
|
103
|
+
* @param {string} input The misspelled/invalid input string
|
|
104
|
+
* @param {string[]} candidates Valid candidate strings
|
|
105
|
+
* @param {object} [opts] Options
|
|
106
|
+
* @param {number} [opts.maxDist=2] Maximum Levenshtein distance
|
|
107
|
+
* @param {number} [opts.maxCandidates=200] Safety guard — return [] if pool exceeds this
|
|
108
|
+
* @returns {string[]} Array of suggested corrections (0–3 items)
|
|
109
|
+
*/
|
|
110
|
+
function suggest(input, candidates, opts) {
|
|
111
|
+
if (!input || !Array.isArray(candidates) || candidates.length === 0) return [];
|
|
112
|
+
|
|
113
|
+
const maxDist = (opts && opts.maxDist !== undefined) ? opts.maxDist : DEFAULT_MAX_DIST;
|
|
114
|
+
const maxCandidates = (opts && opts.maxCandidates !== undefined) ? opts.maxCandidates : MAX_CANDIDATES;
|
|
115
|
+
|
|
116
|
+
// Safety guard: don't process enormous candidate pools
|
|
117
|
+
if (candidates.length > maxCandidates) return [];
|
|
118
|
+
|
|
119
|
+
const original = String(input);
|
|
120
|
+
const normalized = normalizeForMatch(original);
|
|
121
|
+
|
|
122
|
+
// Step 3: Suppress if original exactly matches a valid candidate (true noise)
|
|
123
|
+
if (candidates.includes(original)) return [];
|
|
124
|
+
|
|
125
|
+
// Step 4: Normalization-hint — if normalized matches a candidate but original doesn't
|
|
126
|
+
if (normalized !== original && candidates.includes(normalized)) {
|
|
127
|
+
return [normalized];
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Step 5: DRIFT_MAP exact match (after normalization), intersected with candidate pool
|
|
131
|
+
if (DRIFT_MAP[normalized]) {
|
|
132
|
+
const filtered = DRIFT_MAP[normalized].filter(function(t) {
|
|
133
|
+
return candidates.includes(t);
|
|
134
|
+
});
|
|
135
|
+
if (filtered.length > 0) return filtered.slice(0, MAX_SUGGESTIONS);
|
|
136
|
+
// If no DRIFT_MAP targets are in the pool, fall through to Levenshtein
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Step 6: Levenshtein fallback
|
|
140
|
+
const scored = [];
|
|
141
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
142
|
+
const candidate = candidates[i];
|
|
143
|
+
const d = levenshtein(normalized, candidate);
|
|
144
|
+
if (d <= maxDist && d > 0) {
|
|
145
|
+
scored.push({ candidate: candidate, distance: d });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Sort by distance ascending, then alphabetically
|
|
150
|
+
scored.sort(function(a, b) {
|
|
151
|
+
if (a.distance !== b.distance) return a.distance - b.distance;
|
|
152
|
+
return a.candidate < b.candidate ? -1 : a.candidate > b.candidate ? 1 : 0;
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
const results = [];
|
|
156
|
+
for (let i = 0; i < Math.min(MAX_SUGGESTIONS, scored.length); i++) {
|
|
157
|
+
results.push(scored[i].candidate);
|
|
158
|
+
}
|
|
159
|
+
return results;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// ---------------------------------------------------------------------------
|
|
163
|
+
// suggestEntityType() — shared helper for entity-type error sites
|
|
164
|
+
// ---------------------------------------------------------------------------
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Suggest entity types for an invalid input. Uses a narrower default pool
|
|
168
|
+
* that excludes 'event' for commands that don't handle events.
|
|
169
|
+
*
|
|
170
|
+
* @param {string} input The invalid entity type string
|
|
171
|
+
* @param {string[]} [candidates] Valid entity types (defaults to all 5)
|
|
172
|
+
* @returns {string[]} Array of suggested entity types
|
|
173
|
+
*/
|
|
174
|
+
function suggestEntityType(input, candidates) {
|
|
175
|
+
const pool = candidates || ['sprint', 'task', 'bug', 'event', 'feature'];
|
|
176
|
+
return suggest(input, pool);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// ---------------------------------------------------------------------------
|
|
180
|
+
// formatSuggestion() — render suggestions as "(Did you mean ...?)" string
|
|
181
|
+
// ---------------------------------------------------------------------------
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Format an array of suggestions into a human-readable "(Did you mean ...?)" string.
|
|
185
|
+
*
|
|
186
|
+
* @param {string[]} suggestions Array of 1–3 suggestion strings
|
|
187
|
+
* @returns {string} Formatted string, e.g. '(Did you mean "X"?)' or empty string
|
|
188
|
+
*/
|
|
189
|
+
function formatSuggestion(suggestions) {
|
|
190
|
+
if (!Array.isArray(suggestions) || suggestions.length === 0) return '';
|
|
191
|
+
|
|
192
|
+
const quoted = suggestions.map(function(s) { return '"' + s + '"'; });
|
|
193
|
+
|
|
194
|
+
if (quoted.length === 1) {
|
|
195
|
+
return '(Did you mean ' + quoted[0] + '?)';
|
|
196
|
+
}
|
|
197
|
+
if (quoted.length === 2) {
|
|
198
|
+
return '(Did you mean ' + quoted[0] + ' or ' + quoted[1] + '?)';
|
|
199
|
+
}
|
|
200
|
+
// 3 items: Oxford comma
|
|
201
|
+
return '(Did you mean ' + quoted[0] + ', ' + quoted[1] + ', or ' + quoted[2] + '?)';
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
module.exports = {
|
|
205
|
+
levenshtein,
|
|
206
|
+
normalizeForMatch,
|
|
207
|
+
suggest,
|
|
208
|
+
suggestEntityType,
|
|
209
|
+
formatSuggestion,
|
|
210
|
+
DRIFT_MAP
|
|
211
|
+
};
|
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
// Not supported (by design): $ref, allOf/anyOf/oneOf, propertyNames,
|
|
16
16
|
// dependencies, const. Schemas can express what Forge needs without them.
|
|
17
17
|
|
|
18
|
+
// FORGE-S22-T03: import suggestion engine for "Did you mean?" on enum/field errors
|
|
19
|
+
const { suggest, formatSuggestion } = require('./suggest.cjs');
|
|
20
|
+
|
|
18
21
|
// Fields that may legitimately be null (nullable FKs / optional timing).
|
|
19
22
|
// Mirrors store-cli.cjs — keep in sync.
|
|
20
23
|
const NULLABLE_FIELDS = new Set([
|
|
@@ -74,7 +77,9 @@ function validateRecord(record, schema, opts) {
|
|
|
74
77
|
}
|
|
75
78
|
|
|
76
79
|
if (def.enum && !def.enum.includes(val)) {
|
|
77
|
-
|
|
80
|
+
const enumSuggestions = suggest(String(val), def.enum);
|
|
81
|
+
const suggestionStr = formatSuggestion(enumSuggestions);
|
|
82
|
+
errors.push(`${field}: value "${val}" not in [${def.enum.join(', ')}]${suggestionStr ? ' ' + suggestionStr : ''}`);
|
|
78
83
|
}
|
|
79
84
|
|
|
80
85
|
if (def.minimum !== undefined && typeof val === 'number' && val < def.minimum) {
|
|
@@ -120,8 +125,13 @@ function validateRecord(record, schema, opts) {
|
|
|
120
125
|
|
|
121
126
|
if (schema.additionalProperties === false) {
|
|
122
127
|
const allowed = new Set(Object.keys(properties));
|
|
128
|
+
const fieldNames = Object.keys(properties);
|
|
123
129
|
for (const key of Object.keys(record)) {
|
|
124
|
-
if (!allowed.has(key))
|
|
130
|
+
if (!allowed.has(key)) {
|
|
131
|
+
const fieldSuggestions = suggest(key, fieldNames);
|
|
132
|
+
const suggestionStr = formatSuggestion(fieldSuggestions);
|
|
133
|
+
errors.push(`${key}: undeclared field${suggestionStr ? ' ' + suggestionStr : ''}`);
|
|
134
|
+
}
|
|
125
135
|
}
|
|
126
136
|
}
|
|
127
137
|
|
|
@@ -133,6 +133,9 @@ const MINIMAL_REQUIRED = {
|
|
|
133
133
|
// write-boundary hook can reuse the exact same validation logic as tool writes.
|
|
134
134
|
const { validateRecord, NULLABLE_FIELDS } = require('./lib/validate.js');
|
|
135
135
|
|
|
136
|
+
// FORGE-S22-T03: suggestion engine for "Did you mean?" on validation/transition errors
|
|
137
|
+
const { suggest, suggestEntityType, formatSuggestion } = require('./lib/suggest.cjs');
|
|
138
|
+
|
|
136
139
|
// Valid phase keys for summaries (dot-delimited → underscore in JSON key)
|
|
137
140
|
const VALID_SUMMARY_PHASES = new Set(['plan', 'review_plan', 'implementation', 'code_review', 'validation', 'triage', 'approve']);
|
|
138
141
|
|
|
@@ -359,7 +362,7 @@ function deleteEntity(entity, id) {
|
|
|
359
362
|
case 'bug': return store.deleteBug(id);
|
|
360
363
|
case 'feature': return store.deleteFeature(id);
|
|
361
364
|
default:
|
|
362
|
-
console.error(`Unknown entity type: ${entity}`);
|
|
365
|
+
console.error(`Unknown entity type: ${entity}${formatSuggestion(suggestEntityType(entity, ['sprint', 'task', 'bug', 'feature']))}`);
|
|
363
366
|
process.exit(1);
|
|
364
367
|
}
|
|
365
368
|
}
|
|
@@ -371,7 +374,7 @@ function listEntities(entity, filter) {
|
|
|
371
374
|
case 'bug': return store.listBugs(filter);
|
|
372
375
|
case 'feature': return store.listFeatures(filter);
|
|
373
376
|
default:
|
|
374
|
-
console.error(`Unknown entity type: ${entity}`);
|
|
377
|
+
console.error(`Unknown entity type: ${entity}${formatSuggestion(suggestEntityType(entity, ['sprint', 'task', 'bug', 'feature']))}`);
|
|
375
378
|
process.exit(1);
|
|
376
379
|
}
|
|
377
380
|
}
|
|
@@ -431,7 +434,7 @@ Commands:
|
|
|
431
434
|
delete <entity> <id> Delete an entity record
|
|
432
435
|
update-status <entity> <id> <field> <value> [--force]
|
|
433
436
|
Update status/enum field with transition check
|
|
434
|
-
emit <sprintId> '<json>' [--sidecar]
|
|
437
|
+
emit <sprintId> '<json>' [--sidecar] [--allow-synthetic] Write an event (or sidecar)
|
|
435
438
|
merge-sidecar <sprintId> <eventId> Merge sidecar into canonical event
|
|
436
439
|
record-usage <sprintId> <eventId> [flags] Write a token-usage sidecar
|
|
437
440
|
purge-events <sprintId> Delete all events for a sprint
|
|
@@ -447,6 +450,14 @@ Commands:
|
|
|
447
450
|
describe <entity> Print the JSON Schema for an entity
|
|
448
451
|
template <entity> Print a canonical sample record (required fields populated)
|
|
449
452
|
|
|
453
|
+
Alias commands:
|
|
454
|
+
get <entity> <id> [--json] Alias for: read <entity> <id> [--json]
|
|
455
|
+
get-task <id> [--json] Alias for: read task <id> [--json]
|
|
456
|
+
get-bug <id> [--json] Alias for: read bug <id> [--json]
|
|
457
|
+
get-sprint <id> [--json] Alias for: read sprint <id> [--json]
|
|
458
|
+
get-summary <taskId> <phase> [--json] Read summaries[phase] from a task record
|
|
459
|
+
get-bug-summary <bugId> <phase> [--json] Read summaries[phase] from a bug record
|
|
460
|
+
|
|
450
461
|
Entities: sprint, task, bug, event, feature
|
|
451
462
|
Phases (summaries): plan, review_plan, implementation, code_review, validation
|
|
452
463
|
|
|
@@ -456,13 +467,59 @@ Flags:
|
|
|
456
467
|
FORGE_ALLOW_FORCE=1 in the environment. Subagents MUST NOT use this;
|
|
457
468
|
surface the illegal transition to the orchestrator instead.
|
|
458
469
|
--json Output raw JSON on read (no pretty-print)
|
|
459
|
-
--sidecar
|
|
470
|
+
--sidecar Write as sidecar file on emit (ephemeral _-prefixed)
|
|
471
|
+
--allow-synthetic Bypass sprintId FK check on emit (for synthetic/test events)
|
|
460
472
|
|
|
461
473
|
Exit codes: 0 on success, 1 on failure`);
|
|
462
474
|
process.exit(0);
|
|
463
475
|
}
|
|
464
476
|
|
|
465
|
-
|
|
477
|
+
// ---------------------------------------------------------------------------
|
|
478
|
+
// Alias dispatch table (FORGE-S22-T02)
|
|
479
|
+
//
|
|
480
|
+
// Read-aliases delegate to `cmdRead` by rewriting argv before the main switch.
|
|
481
|
+
// Summary read-throughs (`get-summary`, `get-bug-summary`) are NOT in this
|
|
482
|
+
// map — they are registered as direct cases in the switch below to avoid
|
|
483
|
+
// any chance of routing through a write verb.
|
|
484
|
+
//
|
|
485
|
+
// Entries:
|
|
486
|
+
// target — canonical command this alias rewrites to
|
|
487
|
+
// entity — if set, inserted as the first positional arg (so
|
|
488
|
+
// `get-task <id>` becomes `read task <id>`)
|
|
489
|
+
// injectEntity:false — bare `get`; requires the caller to supply the
|
|
490
|
+
// entity as args[1]. Validated below.
|
|
491
|
+
// ---------------------------------------------------------------------------
|
|
492
|
+
const ALIAS_MAP = {
|
|
493
|
+
'get': { target: 'read', injectEntity: false },
|
|
494
|
+
'get-task': { target: 'read', entity: 'task' },
|
|
495
|
+
'get-bug': { target: 'read', entity: 'bug' },
|
|
496
|
+
'get-sprint': { target: 'read', entity: 'sprint' },
|
|
497
|
+
};
|
|
498
|
+
|
|
499
|
+
let command = args[0];
|
|
500
|
+
|
|
501
|
+
if (Object.prototype.hasOwnProperty.call(ALIAS_MAP, command)) {
|
|
502
|
+
const entry = ALIAS_MAP[command];
|
|
503
|
+
// Drop the alias verb from args; the remainder are positionals + flags.
|
|
504
|
+
args.splice(0, 1);
|
|
505
|
+
if (entry.entity) {
|
|
506
|
+
// `get-task <id>` → args becomes [<id>, ...flags]; prepend entity so the
|
|
507
|
+
// downstream cmdRead sees [entity, id, ...flags].
|
|
508
|
+
args.unshift(entry.entity);
|
|
509
|
+
} else if (entry.injectEntity === false) {
|
|
510
|
+
// Bare `get`: caller must have supplied `<entity> <id>`. Split flags from
|
|
511
|
+
// positionals so we validate the first positional, not a flag.
|
|
512
|
+
const positionals = args.filter((a) => !a.startsWith('--'));
|
|
513
|
+
if (positionals.length < 2 || !ENTITY_TYPES.includes(positionals[0])) {
|
|
514
|
+
console.error("error: 'get' requires an entity type — usage: get <task|bug|sprint> <id>");
|
|
515
|
+
process.exit(1);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
command = entry.target;
|
|
519
|
+
// Reconstruct argv so cmdRead, which reads args[1]/args[2], sees the
|
|
520
|
+
// rewritten shape `[command, entity, id, ...flags]`.
|
|
521
|
+
args.unshift(command);
|
|
522
|
+
}
|
|
466
523
|
|
|
467
524
|
// ---------------------------------------------------------------------------
|
|
468
525
|
// Command implementations
|
|
@@ -478,7 +535,7 @@ function cmdWrite() {
|
|
|
478
535
|
}
|
|
479
536
|
|
|
480
537
|
if (!ENTITY_TYPES.includes(entity)) {
|
|
481
|
-
console.error(`Unknown entity type: ${entity}`);
|
|
538
|
+
console.error(`Unknown entity type: ${entity}${formatSuggestion(suggestEntityType(entity))}`);
|
|
482
539
|
process.exit(1);
|
|
483
540
|
}
|
|
484
541
|
|
|
@@ -522,7 +579,7 @@ function cmdRead() {
|
|
|
522
579
|
}
|
|
523
580
|
|
|
524
581
|
if (!ENTITY_TYPES.includes(entity)) {
|
|
525
|
-
console.error(`Unknown entity type: ${entity}`);
|
|
582
|
+
console.error(`Unknown entity type: ${entity}${formatSuggestion(suggestEntityType(entity))}`);
|
|
526
583
|
process.exit(1);
|
|
527
584
|
}
|
|
528
585
|
|
|
@@ -562,7 +619,7 @@ function cmdList() {
|
|
|
562
619
|
}
|
|
563
620
|
|
|
564
621
|
if (!ENTITY_TYPES.includes(entity)) {
|
|
565
|
-
console.error(`Unknown entity type: ${entity}`);
|
|
622
|
+
console.error(`Unknown entity type: ${entity}${formatSuggestion(suggestEntityType(entity, ['sprint', 'task', 'bug', 'feature']))}`);
|
|
566
623
|
process.exit(1);
|
|
567
624
|
}
|
|
568
625
|
|
|
@@ -593,7 +650,7 @@ function cmdDelete() {
|
|
|
593
650
|
}
|
|
594
651
|
|
|
595
652
|
if (!ENTITY_TYPES.includes(entity)) {
|
|
596
|
-
console.error(`Unknown entity type: ${entity}`);
|
|
653
|
+
console.error(`Unknown entity type: ${entity}${formatSuggestion(suggestEntityType(entity, ['sprint', 'task', 'bug', 'feature']))}`);
|
|
597
654
|
process.exit(1);
|
|
598
655
|
}
|
|
599
656
|
|
|
@@ -614,7 +671,13 @@ function cmdUpdateStatus() {
|
|
|
614
671
|
}
|
|
615
672
|
|
|
616
673
|
if (!TRANSITION_MAP[entity]) {
|
|
617
|
-
|
|
674
|
+
const transitionTypes = Object.keys(TRANSITION_MAP);
|
|
675
|
+
const sug = suggestEntityType(entity, transitionTypes);
|
|
676
|
+
if (sug.length > 0) {
|
|
677
|
+
console.error(`No transition rules for entity type: ${entity} ${formatSuggestion(sug)}`);
|
|
678
|
+
} else {
|
|
679
|
+
console.error(`No transition rules for entity type: ${entity}. Valid types: ${transitionTypes.join(', ')}`);
|
|
680
|
+
}
|
|
618
681
|
process.exit(1);
|
|
619
682
|
}
|
|
620
683
|
|
|
@@ -641,7 +704,11 @@ function cmdUpdateStatus() {
|
|
|
641
704
|
|
|
642
705
|
// Check transition legality
|
|
643
706
|
if (!force && !isLegalTransition(entity, field, currentValue, value)) {
|
|
644
|
-
|
|
707
|
+
const legalTargets = TRANSITION_MAP[entity] && TRANSITION_MAP[entity][currentValue]
|
|
708
|
+
? TRANSITION_MAP[entity][currentValue]
|
|
709
|
+
: [];
|
|
710
|
+
const transitionSuggestions = suggest(value, legalTargets);
|
|
711
|
+
console.error(`Illegal transition: ${entity} ${id} ${field}: ${currentValue} → ${value}` + (formatSuggestion(transitionSuggestions) ? ' ' + formatSuggestion(transitionSuggestions) : ''));
|
|
645
712
|
process.exit(1);
|
|
646
713
|
}
|
|
647
714
|
|
|
@@ -689,16 +756,59 @@ function _normalizeEventTimestamps(data) {
|
|
|
689
756
|
return data;
|
|
690
757
|
}
|
|
691
758
|
|
|
759
|
+
// resolveValidSprintIds() — reads .forge/store/sprints/ and returns an array
|
|
760
|
+
// of sprintId strings (filenames without .json extension). Returns [] on ENOENT
|
|
761
|
+
// so fresh installs without a sprints dir don't crash.
|
|
762
|
+
// Not exported — CLI-only concern.
|
|
763
|
+
function resolveValidSprintIds() {
|
|
764
|
+
try {
|
|
765
|
+
const storeRoot = store.storeRoot || '.forge/store';
|
|
766
|
+
const sprintsDir = path.join(storeRoot, 'sprints');
|
|
767
|
+
return fs.readdirSync(sprintsDir)
|
|
768
|
+
.filter(f => f.endsWith('.json'))
|
|
769
|
+
.map(f => f.slice(0, -5));
|
|
770
|
+
} catch (e) {
|
|
771
|
+
if (e.code === 'ENOENT') return [];
|
|
772
|
+
throw e;
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
|
|
692
776
|
function cmdEmit() {
|
|
693
777
|
const sprintId = args[1];
|
|
694
778
|
const jsonStr = args[2];
|
|
695
779
|
const isSidecar = args.includes('--sidecar');
|
|
780
|
+
const allowSynthetic = args.includes('--allow-synthetic');
|
|
696
781
|
|
|
697
782
|
if (!sprintId || !jsonStr) {
|
|
698
|
-
console.error('Usage: store-cli.cjs emit <sprintId> \'<json>\' [--sidecar]');
|
|
783
|
+
console.error('Usage: store-cli.cjs emit <sprintId> \'<json>\' [--sidecar] [--allow-synthetic]');
|
|
699
784
|
process.exit(1);
|
|
700
785
|
}
|
|
701
786
|
|
|
787
|
+
// FK check: reject sprintIds that are not in the store and not reserved.
|
|
788
|
+
// SYS-* prefix is reserved for system-generated events that predate sprint records.
|
|
789
|
+
// --allow-synthetic bypasses the check for test-harness or synthetic events.
|
|
790
|
+
if (!allowSynthetic) {
|
|
791
|
+
const RESERVED_GLOB = /^SYS-/;
|
|
792
|
+
if (!RESERVED_GLOB.test(sprintId)) {
|
|
793
|
+
const validSprintIds = resolveValidSprintIds();
|
|
794
|
+
if (!validSprintIds.includes(sprintId)) {
|
|
795
|
+
// Suggestion strategy: Levenshtein first; if no results, try suffix match
|
|
796
|
+
// (e.g., "S01" is a suffix of "FORGE-S01") which Levenshtein alone misses
|
|
797
|
+
// when the prefix distance exceeds maxDist=2.
|
|
798
|
+
let suggestions = suggest(sprintId, validSprintIds);
|
|
799
|
+
if (suggestions.length === 0) {
|
|
800
|
+
const lower = sprintId.toLowerCase();
|
|
801
|
+
const suffixMatch = validSprintIds.filter(v => v.toLowerCase().endsWith(lower) || v.toLowerCase().endsWith('-' + lower));
|
|
802
|
+
if (suffixMatch.length > 0) suggestions = suffixMatch.slice(0, 3);
|
|
803
|
+
}
|
|
804
|
+
const hint = formatSuggestion(suggestions);
|
|
805
|
+
console.error(`Unknown sprintId: ${sprintId}.${hint ? ' ' + hint : ''}`);
|
|
806
|
+
console.error(`Valid sprint IDs: ${validSprintIds.join(', ') || '(none found)'}`);
|
|
807
|
+
process.exit(1);
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
|
|
702
812
|
let data;
|
|
703
813
|
try {
|
|
704
814
|
data = JSON.parse(jsonStr);
|
|
@@ -1095,12 +1205,12 @@ function cmdValidate() {
|
|
|
1095
1205
|
const jsonStr = args[2];
|
|
1096
1206
|
|
|
1097
1207
|
if (!entity || !jsonStr) {
|
|
1098
|
-
console.error('Usage: store-cli.cjs validate
|
|
1208
|
+
console.error('Usage: store-cli.cjs validate \u003centity\u003e \'\u003cjson\u003e\'');
|
|
1099
1209
|
process.exit(1);
|
|
1100
1210
|
}
|
|
1101
1211
|
|
|
1102
1212
|
if (!ENTITY_TYPES.includes(entity)) {
|
|
1103
|
-
console.error(`Unknown entity type: ${entity}`);
|
|
1213
|
+
console.error(`Unknown entity type: ${entity}${formatSuggestion(suggestEntityType(entity))}`);
|
|
1104
1214
|
process.exit(1);
|
|
1105
1215
|
}
|
|
1106
1216
|
|
|
@@ -1175,6 +1285,58 @@ function _setSummaryOnEntity(entityKind, entityId, phase, summaryFilePath) {
|
|
|
1175
1285
|
if (VERBOSE) console.log(JSON.stringify({ ok: true, entityKind, id: entityId, phase, dryRun: DRY_RUN }));
|
|
1176
1286
|
}
|
|
1177
1287
|
|
|
1288
|
+
// ---------------------------------------------------------------------------
|
|
1289
|
+
// Summary read-through commands (FORGE-S22-T02)
|
|
1290
|
+
//
|
|
1291
|
+
// `get-summary <taskId> <phase> [--json]` and `get-bug-summary <bugId> <phase>
|
|
1292
|
+
// [--json]` extract a single phase summary from a task/bug record. Registered
|
|
1293
|
+
// as direct switch cases (NOT via ALIAS_MAP) so they cannot accidentally
|
|
1294
|
+
// route through a write verb (e.g. set-bug-summary).
|
|
1295
|
+
// ---------------------------------------------------------------------------
|
|
1296
|
+
function _readSummary(entityKind, id, phase, asJson) {
|
|
1297
|
+
const record = entityKind === 'task' ? store.getTask(id) : store.getBug(id);
|
|
1298
|
+
if (!record) {
|
|
1299
|
+
console.error(`error: ${entityKind} ${id} not found`);
|
|
1300
|
+
process.exit(1);
|
|
1301
|
+
}
|
|
1302
|
+
const summary = record.summaries && record.summaries[phase];
|
|
1303
|
+
if (summary === undefined || summary === null) {
|
|
1304
|
+
console.error(`error: no summary for phase '${phase}' on ${entityKind} ${id}`);
|
|
1305
|
+
process.exit(1);
|
|
1306
|
+
}
|
|
1307
|
+
if (asJson) {
|
|
1308
|
+
console.log(JSON.stringify({ entityId: id, phase, summary }, null, 2));
|
|
1309
|
+
} else {
|
|
1310
|
+
if (typeof summary === 'string') {
|
|
1311
|
+
console.log(summary);
|
|
1312
|
+
} else {
|
|
1313
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
1314
|
+
}
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1318
|
+
function cmdGetSummary() {
|
|
1319
|
+
const taskId = args[1];
|
|
1320
|
+
const phase = args[2];
|
|
1321
|
+
const asJson = args.includes('--json');
|
|
1322
|
+
if (!taskId || !phase) {
|
|
1323
|
+
console.error('Usage: store-cli.cjs get-summary <taskId> <phase> [--json]');
|
|
1324
|
+
process.exit(1);
|
|
1325
|
+
}
|
|
1326
|
+
_readSummary('task', taskId, phase, asJson);
|
|
1327
|
+
}
|
|
1328
|
+
|
|
1329
|
+
function cmdGetBugSummary() {
|
|
1330
|
+
const bugId = args[1];
|
|
1331
|
+
const phase = args[2];
|
|
1332
|
+
const asJson = args.includes('--json');
|
|
1333
|
+
if (!bugId || !phase) {
|
|
1334
|
+
console.error('Usage: store-cli.cjs get-bug-summary <bugId> <phase> [--json]');
|
|
1335
|
+
process.exit(1);
|
|
1336
|
+
}
|
|
1337
|
+
_readSummary('bug', bugId, phase, asJson);
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1178
1340
|
function cmdSetSummary() {
|
|
1179
1341
|
const taskId = args[1];
|
|
1180
1342
|
const phase = args[2];
|
|
@@ -1219,7 +1381,7 @@ function cmdDescribe() {
|
|
|
1219
1381
|
process.exit(1);
|
|
1220
1382
|
}
|
|
1221
1383
|
if (!VALID_ENTITY_DESCRIBE.has(entity)) {
|
|
1222
|
-
console.error(`Unknown entity: ${entity}`);
|
|
1384
|
+
console.error(`Unknown entity: ${entity}${formatSuggestion(suggestEntityType(entity, Array.from(VALID_ENTITY_DESCRIBE)))}`);
|
|
1223
1385
|
console.error(`Entities: ${Array.from(VALID_ENTITY_DESCRIBE).join(', ')}`);
|
|
1224
1386
|
process.exit(1);
|
|
1225
1387
|
}
|
|
@@ -1287,7 +1449,7 @@ function cmdTemplate() {
|
|
|
1287
1449
|
process.exit(1);
|
|
1288
1450
|
}
|
|
1289
1451
|
if (!VALID_ENTITY_DESCRIBE.has(entity)) {
|
|
1290
|
-
console.error(`Unknown entity: ${entity}`);
|
|
1452
|
+
console.error(`Unknown entity: ${entity}${formatSuggestion(suggestEntityType(entity, Array.from(VALID_ENTITY_DESCRIBE)))}`);
|
|
1291
1453
|
console.error(`Entities: ${Array.from(VALID_ENTITY_DESCRIBE).join(', ')}`);
|
|
1292
1454
|
process.exit(1);
|
|
1293
1455
|
}
|
|
@@ -1321,6 +1483,8 @@ switch (command) {
|
|
|
1321
1483
|
case 'progress-clear': cmdProgressClear(); break;
|
|
1322
1484
|
case 'set-summary': cmdSetSummary(); break;
|
|
1323
1485
|
case 'set-bug-summary': cmdSetBugSummary(); break;
|
|
1486
|
+
case 'get-summary': cmdGetSummary(); break;
|
|
1487
|
+
case 'get-bug-summary': cmdGetBugSummary(); break;
|
|
1324
1488
|
case 'describe': cmdDescribe(); break;
|
|
1325
1489
|
case 'template': cmdTemplate(); break;
|
|
1326
1490
|
case 'query':
|
|
@@ -1336,10 +1500,20 @@ switch (command) {
|
|
|
1336
1500
|
process.exit(result.status ?? 1);
|
|
1337
1501
|
break;
|
|
1338
1502
|
}
|
|
1339
|
-
default:
|
|
1340
|
-
|
|
1503
|
+
default: {
|
|
1504
|
+
// Build candidate pool: all command names + ALIAS_MAP keys
|
|
1505
|
+
const commandCandidates = [
|
|
1506
|
+
'write', 'read', 'list', 'delete', 'update-status', 'emit', 'merge-sidecar',
|
|
1507
|
+
'record-usage', 'purge-events', 'resolve-event', 'write-collation-state',
|
|
1508
|
+
'validate', 'progress', 'progress-clear', 'set-summary', 'set-bug-summary',
|
|
1509
|
+
'get-summary', 'get-bug-summary', 'describe', 'template', 'query', 'nlp', 'schema',
|
|
1510
|
+
...Object.keys(ALIAS_MAP)
|
|
1511
|
+
];
|
|
1512
|
+
const cmdSuggestions = suggest(command, commandCandidates);
|
|
1513
|
+
console.error(`Unknown command: ${command}${formatSuggestion(cmdSuggestions)}`);
|
|
1341
1514
|
console.error('Run with --help for usage information.');
|
|
1342
1515
|
process.exit(1);
|
|
1516
|
+
}
|
|
1343
1517
|
}
|
|
1344
1518
|
|
|
1345
1519
|
} catch (err) {
|
|
@@ -274,13 +274,15 @@ const DRY_RUN = process.argv.includes('--dry-run');
|
|
|
274
274
|
const FIX_MODE = process.argv.includes('--fix');
|
|
275
275
|
const JSON_MODE = process.argv.includes('--json');
|
|
276
276
|
|
|
277
|
-
// Read engineering root and project prefix from config for filesystem consistency checks
|
|
277
|
+
// Read engineering root, store root, and project prefix from config for filesystem consistency checks
|
|
278
278
|
const CONFIG_PATH = '.forge/config.json';
|
|
279
279
|
let engineeringRoot = 'engineering';
|
|
280
|
+
let storeRootFromConfig = '.forge/store';
|
|
280
281
|
let projectPrefix = '[A-Z]+';
|
|
281
282
|
try {
|
|
282
283
|
const cfg = JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf8'));
|
|
283
284
|
if (cfg.paths && cfg.paths.engineering) engineeringRoot = cfg.paths.engineering;
|
|
285
|
+
if (cfg.paths && cfg.paths.store) storeRootFromConfig = cfg.paths.store;
|
|
284
286
|
if (cfg.project && cfg.project.prefix) projectPrefix = cfg.project.prefix.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
285
287
|
} catch (_) {}
|
|
286
288
|
|
|
@@ -490,6 +492,25 @@ for (const sprint of allSprints) {
|
|
|
490
492
|
}
|
|
491
493
|
}
|
|
492
494
|
|
|
495
|
+
// --- Pass 2b: Orphan event directories ---
|
|
496
|
+
// Scan .forge/store/events/ for subdirectories whose name does not match any
|
|
497
|
+
// known sprintId and is not a reserved SYS-* prefix.
|
|
498
|
+
const RESERVED_EVENT_PREFIX = /^SYS-/;
|
|
499
|
+
const eventsBaseDir = path.join(storeRootFromConfig, 'events');
|
|
500
|
+
if (fs.existsSync(eventsBaseDir)) {
|
|
501
|
+
let eventDirEntries;
|
|
502
|
+
try { eventDirEntries = fs.readdirSync(eventsBaseDir); } catch (_) { eventDirEntries = []; }
|
|
503
|
+
for (const entry of eventDirEntries) {
|
|
504
|
+
if (RESERVED_EVENT_PREFIX.test(entry)) continue; // reserved prefix — skip
|
|
505
|
+
if (sprintIds.has(entry)) continue; // known sprint — skip
|
|
506
|
+
const entryPath = path.join(eventsBaseDir, entry);
|
|
507
|
+
let isDir = false;
|
|
508
|
+
try { isDir = fs.statSync(entryPath).isDirectory(); } catch (_) {}
|
|
509
|
+
if (!isDir) continue; // non-directory entries — skip silently
|
|
510
|
+
warn(entry, `event directory "${entry}" has no matching sprint record (ORPHAN_EVENT_DIR)`, 'ORPHAN_EVENT_DIR');
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
493
514
|
// --- Pass 3: Filesystem consistency ---
|
|
494
515
|
// Walk engineering/sprints/ to detect orphaned directories and dangling path fields.
|
|
495
516
|
// All checks here emit warnings (not errors) for backward compatibility.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defaultEndpointResolver = void 0;
|
|
4
|
-
const
|
|
4
|
+
const client_1 = require("@aws-sdk/core/client");
|
|
5
5
|
const endpoints_1 = require("@smithy/core/endpoints");
|
|
6
6
|
const bdd_1 = require("./bdd");
|
|
7
7
|
const cache = new endpoints_1.EndpointCache({
|
|
@@ -15,4 +15,4 @@ const defaultEndpointResolver = (endpointParams, context = {}) => {
|
|
|
15
15
|
}));
|
|
16
16
|
};
|
|
17
17
|
exports.defaultEndpointResolver = defaultEndpointResolver;
|
|
18
|
-
endpoints_1.customEndpointFunctions.aws =
|
|
18
|
+
endpoints_1.customEndpointFunctions.aws = client_1.awsEndpointFunctions;
|