@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,290 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* build-context-pack.cjs — build a compact architecture context pack from
|
|
6
|
+
* engineering/architecture/*.md files. Writes:
|
|
7
|
+
* .forge/cache/context-pack.md (human-readable summary)
|
|
8
|
+
* .forge/cache/context-pack.json (machine-readable index)
|
|
9
|
+
*
|
|
10
|
+
* CLI:
|
|
11
|
+
* node build-context-pack.cjs [--arch-dir <path>] [--out-md <path>] [--out-json <path>]
|
|
12
|
+
*
|
|
13
|
+
* Exported API:
|
|
14
|
+
* extractDoc(filePath) → { title, firstPara, sections, lineCount, filePath }
|
|
15
|
+
* buildContextPack({ archDir, existingPackPath? }) → pack object (or { skipped: true })
|
|
16
|
+
* computeSourceHash(archDir) → "sha256:..."
|
|
17
|
+
* writeContextPack(pack, outMd, outJson) → void (atomic)
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
const fs = require('fs');
|
|
21
|
+
const path = require('path');
|
|
22
|
+
const crypto = require('crypto');
|
|
23
|
+
|
|
24
|
+
const PACK_LINE_LIMIT = 400;
|
|
25
|
+
|
|
26
|
+
// ── Document extraction ──────────────────────────────────────────────────────
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Extract H1 title, first paragraph, and ## Key / ## Summary sections from
|
|
30
|
+
* a single markdown file.
|
|
31
|
+
*/
|
|
32
|
+
function extractDoc(filePath) {
|
|
33
|
+
const raw = fs.readFileSync(filePath, 'utf8');
|
|
34
|
+
const lines = raw.split('\n');
|
|
35
|
+
const lineCount = lines[lines.length - 1] === '' ? lines.length - 1 : lines.length;
|
|
36
|
+
|
|
37
|
+
let title = '';
|
|
38
|
+
let firstPara = '';
|
|
39
|
+
const sections = {};
|
|
40
|
+
|
|
41
|
+
let i = 0;
|
|
42
|
+
|
|
43
|
+
// Find H1
|
|
44
|
+
while (i < lines.length) {
|
|
45
|
+
const m = lines[i].match(/^#\s+(.+)$/);
|
|
46
|
+
if (m) {
|
|
47
|
+
title = m[1].trim();
|
|
48
|
+
i++;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
i++;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// First paragraph: non-empty lines after H1, before next heading
|
|
55
|
+
const firstParaLines = [];
|
|
56
|
+
while (i < lines.length && !lines[i].startsWith('#')) {
|
|
57
|
+
if (lines[i].trim()) firstParaLines.push(lines[i]);
|
|
58
|
+
else if (firstParaLines.length) break; // blank line ends paragraph
|
|
59
|
+
i++;
|
|
60
|
+
}
|
|
61
|
+
firstPara = firstParaLines.join(' ').trim();
|
|
62
|
+
|
|
63
|
+
// Remaining: scan for ## Key * or ## Summary sections
|
|
64
|
+
while (i < lines.length) {
|
|
65
|
+
const hm = lines[i].match(/^##\s+(Key\s+\S.*|Summary)\s*$/i);
|
|
66
|
+
if (hm) {
|
|
67
|
+
const heading = hm[1].trim();
|
|
68
|
+
i++;
|
|
69
|
+
const sectionLines = [];
|
|
70
|
+
while (i < lines.length && !lines[i].match(/^##/)) {
|
|
71
|
+
sectionLines.push(lines[i]);
|
|
72
|
+
i++;
|
|
73
|
+
}
|
|
74
|
+
// Trim leading/trailing blank lines
|
|
75
|
+
while (sectionLines.length && !sectionLines[0].trim()) sectionLines.shift();
|
|
76
|
+
while (sectionLines.length && !sectionLines[sectionLines.length - 1].trim()) sectionLines.pop();
|
|
77
|
+
if (sectionLines.length) {
|
|
78
|
+
sections[heading] = sectionLines.join('\n');
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
i++;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return { title, firstPara, sections, lineCount, filePath };
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// ── Source hash ──────────────────────────────────────────────────────────────
|
|
89
|
+
|
|
90
|
+
function listArchFiles(archDir) {
|
|
91
|
+
if (!fs.existsSync(archDir)) {
|
|
92
|
+
throw new Error(`Architecture directory not found: ${archDir}`);
|
|
93
|
+
}
|
|
94
|
+
return fs.readdirSync(archDir)
|
|
95
|
+
.filter((f) => f.endsWith('.md') && !f.endsWith('.draft.md'))
|
|
96
|
+
.sort()
|
|
97
|
+
.map((f) => path.join(archDir, f));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function computeSourceHash(archDir) {
|
|
101
|
+
const files = listArchFiles(archDir);
|
|
102
|
+
const hash = crypto.createHash('sha256');
|
|
103
|
+
// FR-012: Content-based hashing for reproducibility.
|
|
104
|
+
// Old mtime-based hash was non-deterministic across runs after git checkout.
|
|
105
|
+
// New pattern: filePath\0 + fileContents + \0 — null-byte separators prevent
|
|
106
|
+
// concatenation ambiguity and make the hash a pure function of content.
|
|
107
|
+
for (const f of files) {
|
|
108
|
+
hash.update(`${f}\0`);
|
|
109
|
+
hash.update(fs.readFileSync(f));
|
|
110
|
+
hash.update('\0');
|
|
111
|
+
}
|
|
112
|
+
return `sha256:${hash.digest('hex')}`;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// ── Pack composition ─────────────────────────────────────────────────────────
|
|
116
|
+
|
|
117
|
+
function composePack(docs, builtAt, sourceHash, archDir) {
|
|
118
|
+
const lines = [];
|
|
119
|
+
|
|
120
|
+
lines.push('# Architecture Context Pack', '');
|
|
121
|
+
lines.push(`Built: ${builtAt}`);
|
|
122
|
+
lines.push(`Source hash: ${sourceHash}`);
|
|
123
|
+
lines.push('');
|
|
124
|
+
|
|
125
|
+
// Aggregate Key/Summary sections from all docs, grouped by heading name
|
|
126
|
+
const allHeadings = [];
|
|
127
|
+
const headingDocs = {}; // heading → [{basename, content}]
|
|
128
|
+
for (const doc of docs) {
|
|
129
|
+
for (const [heading, content] of Object.entries(doc.sections)) {
|
|
130
|
+
if (!headingDocs[heading]) {
|
|
131
|
+
allHeadings.push(heading);
|
|
132
|
+
headingDocs[heading] = [];
|
|
133
|
+
}
|
|
134
|
+
headingDocs[heading].push({ basename: path.basename(doc.filePath), content });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (allHeadings.length) {
|
|
139
|
+
for (const heading of allHeadings) {
|
|
140
|
+
lines.push(`## ${heading}`, '');
|
|
141
|
+
for (const { basename, content } of headingDocs[heading]) {
|
|
142
|
+
if (headingDocs[heading].length > 1) {
|
|
143
|
+
lines.push(`*From ${basename}:*`, '');
|
|
144
|
+
}
|
|
145
|
+
lines.push(content, '');
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Document summaries
|
|
151
|
+
lines.push('## Document summaries', '');
|
|
152
|
+
for (const doc of docs) {
|
|
153
|
+
const basename = path.basename(doc.filePath);
|
|
154
|
+
lines.push(`### ${doc.title || basename}`);
|
|
155
|
+
if (doc.firstPara) {
|
|
156
|
+
lines.push('');
|
|
157
|
+
lines.push(doc.firstPara);
|
|
158
|
+
}
|
|
159
|
+
lines.push('');
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// File index
|
|
163
|
+
lines.push('## File index', '');
|
|
164
|
+
for (const doc of docs) {
|
|
165
|
+
const relPath = path.relative(process.cwd(), doc.filePath);
|
|
166
|
+
lines.push(`- ${relPath} — ${doc.title || path.basename(doc.filePath)} (${doc.lineCount} lines)`);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return lines;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// ── Build ────────────────────────────────────────────────────────────────────
|
|
173
|
+
|
|
174
|
+
function buildContextPack({ archDir, existingPackPath }) {
|
|
175
|
+
// Check for manual override
|
|
176
|
+
if (existingPackPath && fs.existsSync(existingPackPath)) {
|
|
177
|
+
const existing = fs.readFileSync(existingPackPath, 'utf8');
|
|
178
|
+
if (/^---[\s\S]*?manual:\s*true[\s\S]*?---/m.test(existing)) {
|
|
179
|
+
return { skipped: true };
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const files = listArchFiles(archDir);
|
|
184
|
+
const docs = files.map((f) => extractDoc(f));
|
|
185
|
+
|
|
186
|
+
const builtAt = new Date().toISOString();
|
|
187
|
+
const sourceHash = computeSourceHash(archDir);
|
|
188
|
+
|
|
189
|
+
const mdLines = composePack(docs, builtAt, sourceHash, archDir);
|
|
190
|
+
let markdown = mdLines.join('\n') + '\n';
|
|
191
|
+
|
|
192
|
+
// Enforce 400-line cap (count real lines, excluding trailing empty after final \n)
|
|
193
|
+
const splitLines = markdown.split('\n');
|
|
194
|
+
const realLineCount = splitLines[splitLines.length - 1] === '' ? splitLines.length - 1 : splitLines.length;
|
|
195
|
+
if (realLineCount > PACK_LINE_LIMIT) {
|
|
196
|
+
// Keep PACK_LINE_LIMIT - 1 lines so the marker fits within the cap
|
|
197
|
+
const truncated = splitLines.slice(0, PACK_LINE_LIMIT - 1);
|
|
198
|
+
truncated.push('<!-- TRUNCATED: pack exceeded 400 lines. Architecture KB has grown beyond summary capacity. Run /forge:regenerate after pruning docs. -->');
|
|
199
|
+
markdown = truncated.join('\n') + '\n';
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
const sources = files.map((f) => {
|
|
203
|
+
const stat = fs.statSync(f);
|
|
204
|
+
return {
|
|
205
|
+
path: path.relative(process.cwd(), f),
|
|
206
|
+
size: stat.size,
|
|
207
|
+
mtime: new Date(stat.mtimeMs).toISOString(),
|
|
208
|
+
};
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
return {
|
|
212
|
+
version: 1,
|
|
213
|
+
built_at: builtAt,
|
|
214
|
+
source_hash: sourceHash,
|
|
215
|
+
sources,
|
|
216
|
+
markdown,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// ── Atomic write ─────────────────────────────────────────────────────────────
|
|
221
|
+
|
|
222
|
+
function writeContextPack(pack, outMd, outJson) {
|
|
223
|
+
fs.mkdirSync(path.dirname(outMd), { recursive: true });
|
|
224
|
+
fs.mkdirSync(path.dirname(outJson), { recursive: true });
|
|
225
|
+
|
|
226
|
+
// Write markdown
|
|
227
|
+
const tmpMd = outMd + '.tmp';
|
|
228
|
+
fs.writeFileSync(tmpMd, pack.markdown, 'utf8');
|
|
229
|
+
fs.renameSync(tmpMd, outMd);
|
|
230
|
+
|
|
231
|
+
// Write JSON index
|
|
232
|
+
const jsonRecord = {
|
|
233
|
+
version: pack.version,
|
|
234
|
+
built_at: pack.built_at,
|
|
235
|
+
source_hash: pack.source_hash,
|
|
236
|
+
sources: pack.sources,
|
|
237
|
+
summary_path: outMd,
|
|
238
|
+
};
|
|
239
|
+
const tmpJson = outJson + '.tmp';
|
|
240
|
+
fs.writeFileSync(tmpJson, JSON.stringify(jsonRecord, null, 2) + '\n', 'utf8');
|
|
241
|
+
fs.renameSync(tmpJson, outJson);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// ── CLI ──────────────────────────────────────────────────────────────────────
|
|
245
|
+
|
|
246
|
+
function parseArgs(argv) {
|
|
247
|
+
const out = {};
|
|
248
|
+
for (let i = 0; i < argv.length; i++) {
|
|
249
|
+
const a = argv[i];
|
|
250
|
+
if (a === '--arch-dir') out.archDir = argv[++i];
|
|
251
|
+
else if (a === '--out-md') out.outMd = argv[++i];
|
|
252
|
+
else if (a === '--out-json') out.outJson = argv[++i];
|
|
253
|
+
}
|
|
254
|
+
return out;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function main() {
|
|
258
|
+
const args = parseArgs(process.argv.slice(2));
|
|
259
|
+
const archDir = args.archDir || path.resolve(process.cwd(), 'engineering/architecture');
|
|
260
|
+
const outMd = args.outMd || path.resolve(process.cwd(), '.forge/cache/context-pack.md');
|
|
261
|
+
const outJson = args.outJson || path.resolve(process.cwd(), '.forge/cache/context-pack.json');
|
|
262
|
+
|
|
263
|
+
const pack = buildContextPack({ archDir, existingPackPath: outMd });
|
|
264
|
+
|
|
265
|
+
if (pack.skipped) {
|
|
266
|
+
process.stdout.write('context-pack: manual: true — skipping rebuild\n');
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
writeContextPack(pack, outMd, outJson);
|
|
271
|
+
process.stdout.write(
|
|
272
|
+
`context-pack: wrote ${pack.sources.length} sources → ${outMd}\n`,
|
|
273
|
+
);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
if (require.main === module) {
|
|
277
|
+
try {
|
|
278
|
+
main();
|
|
279
|
+
} catch (err) {
|
|
280
|
+
process.stderr.write(`build-context-pack: ${err.message}\n`);
|
|
281
|
+
process.exit(1);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
module.exports = {
|
|
286
|
+
extractDoc,
|
|
287
|
+
buildContextPack,
|
|
288
|
+
computeSourceHash,
|
|
289
|
+
writeContextPack,
|
|
290
|
+
};
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// build-init-context.cjs
|
|
3
|
+
// Deterministic project brief builder for /forge:init Phase 7 fan-out.
|
|
4
|
+
// Reads: .forge/config.json, .forge/personas/, .forge/templates/, {kb}/
|
|
5
|
+
// Writes: .forge/init-context.md (markdown — for LLM prompts)
|
|
6
|
+
// .forge/init-context.json (same data — for deterministic consumers)
|
|
7
|
+
//
|
|
8
|
+
// Uses only Node.js built-ins — no npm dependencies.
|
|
9
|
+
// Exports: buildBrief, extractPersonaSymbol, parseEntities (for testing)
|
|
10
|
+
|
|
11
|
+
'use strict';
|
|
12
|
+
const fs = require('fs');
|
|
13
|
+
const path = require('path');
|
|
14
|
+
|
|
15
|
+
// ── Skill → persona wiring (mirrors meta-skill-recommendations.md) ─────────
|
|
16
|
+
// Maps installed skill name to the persona roles it wires into.
|
|
17
|
+
const SKILL_PERSONA_MAP = {
|
|
18
|
+
'vue-best-practices': ['engineer', 'supervisor'],
|
|
19
|
+
'stripe-integration': ['engineer', 'bug-fixer'],
|
|
20
|
+
'frontend-design': ['engineer', 'supervisor'],
|
|
21
|
+
'typescript-lsp': ['engineer', 'supervisor'],
|
|
22
|
+
'pyright-lsp': ['engineer', 'supervisor'],
|
|
23
|
+
'ruby-lsp': ['engineer', 'supervisor'],
|
|
24
|
+
'gopls-lsp': ['engineer', 'supervisor'],
|
|
25
|
+
'rust-analyzer-lsp': ['engineer', 'supervisor'],
|
|
26
|
+
'jdtls-lsp': ['engineer', 'supervisor'],
|
|
27
|
+
'kotlin-lsp': ['engineer', 'supervisor'],
|
|
28
|
+
'csharp-lsp': ['engineer', 'supervisor'],
|
|
29
|
+
'clangd-lsp': ['engineer', 'supervisor'],
|
|
30
|
+
'php-lsp': ['engineer', 'supervisor'],
|
|
31
|
+
'swift-lsp': ['engineer', 'supervisor'],
|
|
32
|
+
'lua-lsp': ['engineer', 'supervisor'],
|
|
33
|
+
'security-guidance': ['supervisor', 'engineer'],
|
|
34
|
+
'mcp-server-dev': ['engineer'],
|
|
35
|
+
'agent-sdk-dev': ['engineer'],
|
|
36
|
+
'threejs-skills': ['engineer'],
|
|
37
|
+
'meta-webxr-skills': ['engineer'],
|
|
38
|
+
'freshdesk-api': ['engineer'],
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// ── extractPersonaSymbol ──────────────────────────────────────────────────────
|
|
42
|
+
// Reads the first 15 lines of a persona file and extracts the emoji symbol.
|
|
43
|
+
// Handles two formats:
|
|
44
|
+
// 1. First-line emoji (generated persona style):
|
|
45
|
+
// 🗻 **emberglow Architect** — tagline
|
|
46
|
+
// 2. YAML frontmatter "symbol:" line:
|
|
47
|
+
// ---
|
|
48
|
+
// symbol: 🏛
|
|
49
|
+
// ---
|
|
50
|
+
// Returns '·' if no symbol is found.
|
|
51
|
+
function extractPersonaSymbol(content) {
|
|
52
|
+
const lines = content.split('\n').slice(0, 15);
|
|
53
|
+
|
|
54
|
+
// Format 1: first non-blank line starts with an emoji character
|
|
55
|
+
// Unicode emoji range check — covers most common emoji blocks
|
|
56
|
+
const firstNonBlank = lines.find(l => l.trim().length > 0);
|
|
57
|
+
if (firstNonBlank) {
|
|
58
|
+
// Match a leading emoji (one or more emoji codepoints before a space or end)
|
|
59
|
+
const emojiMatch = firstNonBlank.match(/^(\p{Emoji_Presentation}|\p{Extended_Pictographic})/u);
|
|
60
|
+
if (emojiMatch) return emojiMatch[0];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Format 2: "symbol: <value>" in YAML frontmatter
|
|
64
|
+
for (const line of lines) {
|
|
65
|
+
const m = line.match(/^symbol:\s*(\S.*?)\s*$/i);
|
|
66
|
+
if (m) return m[1].trim();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return '·';
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// ── parseEntities ─────────────────────────────────────────────────────────────
|
|
73
|
+
// Extracts domain entity names from MASTER_INDEX.md content.
|
|
74
|
+
// Looks for a heading containing "Entities" or "Domain"; reads the first
|
|
75
|
+
// non-empty content line(s) below it as either comma-separated names or
|
|
76
|
+
// markdown list items. Returns a sorted, deduplicated array.
|
|
77
|
+
function parseEntities(content) {
|
|
78
|
+
const lines = content.split('\n');
|
|
79
|
+
let inSection = false;
|
|
80
|
+
const found = [];
|
|
81
|
+
|
|
82
|
+
for (let i = 0; i < lines.length; i++) {
|
|
83
|
+
const line = lines[i];
|
|
84
|
+
|
|
85
|
+
if (/^#{1,4}\s.*(entities|domain)/i.test(line)) {
|
|
86
|
+
inSection = true;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (inSection) {
|
|
91
|
+
// Stop at the next heading
|
|
92
|
+
if (/^#{1,4}\s/.test(line)) break;
|
|
93
|
+
|
|
94
|
+
const trimmed = line.trim();
|
|
95
|
+
if (!trimmed) continue;
|
|
96
|
+
|
|
97
|
+
// List items: "- Entity" or "* Entity"
|
|
98
|
+
if (/^[-*]\s+/.test(trimmed)) {
|
|
99
|
+
const name = trimmed.replace(/^[-*]\s+/, '').trim();
|
|
100
|
+
if (name) found.push(name);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Comma-separated line
|
|
105
|
+
if (trimmed.includes(',')) {
|
|
106
|
+
for (const part of trimmed.split(',')) {
|
|
107
|
+
const name = part.trim();
|
|
108
|
+
if (name) found.push(name);
|
|
109
|
+
}
|
|
110
|
+
break; // Only read one comma-separated line
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Single name on its own line
|
|
114
|
+
if (trimmed && !trimmed.startsWith('#')) {
|
|
115
|
+
found.push(trimmed);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Deduplicate and sort
|
|
121
|
+
return [...new Set(found)].sort();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// ── buildBrief ────────────────────────────────────────────────────────────────
|
|
125
|
+
// Main builder. Takes options object:
|
|
126
|
+
// { configPath, personasDir, templatesDir, kbPath }
|
|
127
|
+
// Returns: { markdown: string, json: object }
|
|
128
|
+
function buildBrief({ configPath, personasDir, templatesDir, kbPath }) {
|
|
129
|
+
// 1. Read config
|
|
130
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
131
|
+
const projectName = (config.project && config.project.name) || '';
|
|
132
|
+
const projectPrefix = (config.project && config.project.prefix) || '';
|
|
133
|
+
const commands = config.commands || {};
|
|
134
|
+
const paths = config.paths || {};
|
|
135
|
+
const installedSkills = Array.isArray(config.installedSkills) ? config.installedSkills : [];
|
|
136
|
+
|
|
137
|
+
const syntaxCheck = commands.syntaxCheck || '';
|
|
138
|
+
const testCmd = commands.test || '';
|
|
139
|
+
const buildCmd = commands.build || '';
|
|
140
|
+
const lintCmd = commands.lint || '';
|
|
141
|
+
|
|
142
|
+
// 2. Personas — exclude README.md, sort by role name
|
|
143
|
+
const personas = [];
|
|
144
|
+
if (fs.existsSync(personasDir)) {
|
|
145
|
+
const files = fs.readdirSync(personasDir)
|
|
146
|
+
.filter(f => f.endsWith('.md') && f.toLowerCase() !== 'readme.md')
|
|
147
|
+
.sort();
|
|
148
|
+
|
|
149
|
+
for (const file of files) {
|
|
150
|
+
const role = path.basename(file, '.md');
|
|
151
|
+
const filePath = path.join(personasDir, file);
|
|
152
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
153
|
+
const symbol = extractPersonaSymbol(content);
|
|
154
|
+
// One-liner: first non-blank, non-YAML, non-heading line after the opening block
|
|
155
|
+
const bodyLines = content.split('\n').filter(l => {
|
|
156
|
+
const t = l.trim();
|
|
157
|
+
return t && !t.startsWith('#') && !t.startsWith('---') && !t.match(/^\w+:/);
|
|
158
|
+
});
|
|
159
|
+
const oneLiner = bodyLines[0] ? bodyLines[0].trim() : '';
|
|
160
|
+
personas.push({ role, file: path.join(personasDir, file), symbol, oneLiner });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// 3. Templates — stems only, exclude README.md, sort
|
|
165
|
+
const templates = [];
|
|
166
|
+
if (fs.existsSync(templatesDir)) {
|
|
167
|
+
const files = fs.readdirSync(templatesDir)
|
|
168
|
+
.filter(f => f.endsWith('.md') && f.toLowerCase() !== 'readme.md')
|
|
169
|
+
.sort();
|
|
170
|
+
for (const f of files) {
|
|
171
|
+
templates.push(path.basename(f, '.md'));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// 4. Architecture docs — filenames only, sorted
|
|
176
|
+
const archDir = path.join(kbPath, 'architecture');
|
|
177
|
+
const architectureDocs = [];
|
|
178
|
+
if (fs.existsSync(archDir)) {
|
|
179
|
+
const files = fs.readdirSync(archDir)
|
|
180
|
+
.filter(f => f.endsWith('.md'))
|
|
181
|
+
.sort();
|
|
182
|
+
architectureDocs.push(...files);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// 5. Domain entities — from MASTER_INDEX.md
|
|
186
|
+
const masterIndexPath = path.join(kbPath, 'MASTER_INDEX.md');
|
|
187
|
+
let entities = [];
|
|
188
|
+
if (fs.existsSync(masterIndexPath)) {
|
|
189
|
+
entities = parseEntities(fs.readFileSync(masterIndexPath, 'utf8'));
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// 6. Skill wiring
|
|
193
|
+
const skillWiring = installedSkills
|
|
194
|
+
.filter(s => SKILL_PERSONA_MAP[s])
|
|
195
|
+
.map(s => ({ skill: s, personas: SKILL_PERSONA_MAP[s] }))
|
|
196
|
+
.sort((a, b) => a.skill.localeCompare(b.skill));
|
|
197
|
+
|
|
198
|
+
// ── Build JSON ──────────────────────────────────────────────────────────────
|
|
199
|
+
const json = {
|
|
200
|
+
project: { name: projectName, prefix: projectPrefix },
|
|
201
|
+
commands: { syntaxCheck, test: testCmd, build: buildCmd, lint: lintCmd },
|
|
202
|
+
paths,
|
|
203
|
+
personas,
|
|
204
|
+
templates,
|
|
205
|
+
architectureDocs,
|
|
206
|
+
entities,
|
|
207
|
+
skillWiring,
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
// ── Build Markdown ──────────────────────────────────────────────────────────
|
|
211
|
+
const lines = [];
|
|
212
|
+
|
|
213
|
+
lines.push(`# ${projectName || 'Project'} — Init Context`);
|
|
214
|
+
lines.push('');
|
|
215
|
+
|
|
216
|
+
// Commands
|
|
217
|
+
lines.push('## Commands');
|
|
218
|
+
lines.push(`{SYNTAX_CHECK} = ${syntaxCheck}`);
|
|
219
|
+
lines.push(`{TEST_COMMAND} = ${testCmd}`);
|
|
220
|
+
lines.push(`{BUILD_COMMAND} = ${buildCmd}`);
|
|
221
|
+
lines.push(`{LINT_COMMAND} = ${lintCmd}`);
|
|
222
|
+
lines.push('');
|
|
223
|
+
|
|
224
|
+
// Paths
|
|
225
|
+
lines.push('## Paths');
|
|
226
|
+
for (const [key, val] of Object.entries(paths).sort(([a], [b]) => a.localeCompare(b))) {
|
|
227
|
+
lines.push(`${key.padEnd(12)} = ${val}`);
|
|
228
|
+
}
|
|
229
|
+
lines.push('');
|
|
230
|
+
|
|
231
|
+
// Personas
|
|
232
|
+
lines.push('## Personas');
|
|
233
|
+
for (const p of personas) {
|
|
234
|
+
lines.push(`${p.role} | ${p.file} | ${p.symbol} | ${p.oneLiner}`);
|
|
235
|
+
}
|
|
236
|
+
lines.push('');
|
|
237
|
+
|
|
238
|
+
// Templates
|
|
239
|
+
lines.push('## Templates');
|
|
240
|
+
lines.push(templates.join(', '));
|
|
241
|
+
lines.push('');
|
|
242
|
+
|
|
243
|
+
// Architecture Docs
|
|
244
|
+
lines.push('## Architecture Docs');
|
|
245
|
+
lines.push(architectureDocs.join(', '));
|
|
246
|
+
lines.push('');
|
|
247
|
+
|
|
248
|
+
// Domain Entities
|
|
249
|
+
lines.push('## Domain Entities');
|
|
250
|
+
lines.push(entities.join(', '));
|
|
251
|
+
lines.push('');
|
|
252
|
+
|
|
253
|
+
// Installed Skill Wiring
|
|
254
|
+
lines.push('## Installed Skill Wiring');
|
|
255
|
+
if (skillWiring.length === 0) {
|
|
256
|
+
lines.push('(none)');
|
|
257
|
+
} else {
|
|
258
|
+
for (const { skill, personas: ps } of skillWiring) {
|
|
259
|
+
lines.push(`${skill} → ${ps.join(', ')}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
lines.push('');
|
|
263
|
+
|
|
264
|
+
const markdown = lines.join('\n');
|
|
265
|
+
|
|
266
|
+
return { markdown, json };
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// ── CLI entry point ───────────────────────────────────────────────────────────
|
|
270
|
+
|
|
271
|
+
function parseCliArgs(argv) {
|
|
272
|
+
const args = {};
|
|
273
|
+
for (let i = 2; i < argv.length; i++) {
|
|
274
|
+
if (argv[i].startsWith('--') && argv[i + 1] && !argv[i + 1].startsWith('--')) {
|
|
275
|
+
args[argv[i].slice(2)] = argv[i + 1];
|
|
276
|
+
i++;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return args;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
if (require.main === module) {
|
|
283
|
+
const args = parseCliArgs(process.argv);
|
|
284
|
+
|
|
285
|
+
const configPath = args['config'];
|
|
286
|
+
const personasDir = args['personas'];
|
|
287
|
+
const templatesDir = args['templates'];
|
|
288
|
+
const kbPath = args['kb'];
|
|
289
|
+
const outMd = args['out'];
|
|
290
|
+
const outJson = args['json-out'];
|
|
291
|
+
|
|
292
|
+
if (!configPath || !personasDir || !templatesDir || !kbPath || !outMd) {
|
|
293
|
+
process.stderr.write(
|
|
294
|
+
'Usage: node build-init-context.cjs ' +
|
|
295
|
+
'--config <path> --personas <dir> --templates <dir> --kb <dir> --out <md-path> ' +
|
|
296
|
+
'[--json-out <json-path>]\n'
|
|
297
|
+
);
|
|
298
|
+
process.exit(1);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
try {
|
|
302
|
+
const { markdown, json } = buildBrief({ configPath, personasDir, templatesDir, kbPath });
|
|
303
|
+
fs.mkdirSync(path.dirname(path.resolve(outMd)), { recursive: true });
|
|
304
|
+
fs.writeFileSync(outMd, markdown, 'utf8');
|
|
305
|
+
|
|
306
|
+
const jsonPath = outJson || outMd.replace(/\.md$/, '.json');
|
|
307
|
+
fs.writeFileSync(jsonPath, JSON.stringify(json, null, 2) + '\n', 'utf8');
|
|
308
|
+
|
|
309
|
+
// Print summary line to stdout (consumed by Phase 7 orchestrator)
|
|
310
|
+
const nPersonas = json.personas.length;
|
|
311
|
+
const nTemplates = json.templates.length;
|
|
312
|
+
const nDocs = json.architectureDocs.length;
|
|
313
|
+
process.stdout.write(
|
|
314
|
+
`\u25CB Brief written \u2014 ${nPersonas} personas, ${nTemplates} templates, ${nDocs} architecture docs\n`
|
|
315
|
+
);
|
|
316
|
+
} catch (err) {
|
|
317
|
+
process.stderr.write(`build-init-context: ${err.message}\n`);
|
|
318
|
+
process.exit(1);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
module.exports = { buildBrief, extractPersonaSymbol, parseEntities };
|