diff --git a/openwiki/.claims/architecture/agent-runtime.json b/openwiki/.claims/architecture/agent-runtime.json index a3e4a4472..ba57bcd0b 100644 --- a/openwiki/.claims/architecture/agent-runtime.json +++ b/openwiki/.claims/architecture/agent-runtime.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:75508a3f5ff695fb0a06563aaf99fd952e2f0c6c21fe11f3fd6a03c2874afedd", + "pageVersion": "sha256:4bff825abb721e269eb29ffe443ab79eb39da996a6d69751f5b17fe97fc592c2", "claims": [ { "id": "claim_b135795717474452be15e901f67a507f", @@ -162,15 +162,15 @@ }, { "id": "claim_78a93b97c46341cf8a67cc22e4a85755", - "statement": "The shared OpenAI/compatible branch honors a per-provider base URL, selects the Responses API only when the provider config declares it via providerUsesResponsesApi, and forces the streaming HTTP transport (streaming:true) for gateways whose providerUsesStreaming returns true, without disabling streaming when the flag is absent.", + "statement": "The shared ChatOpenAI fallthrough (openai, OpenAI-compatible gateways, and copilot) honors a per-provider base URL, selects the Responses API only when the provider config declares it via providerUsesResponsesApi, and forces the streaming HTTP transport (streaming:true) for providers whose providerUsesStreaming returns true — copilot is unconditionally forced (all Copilot models stream, because non-GPT-5 chat-completions models reject or return empty responses without streaming) and openai-compatible gateways opt in via OPENWIKI_OPENAI_COMPATIBLE_STREAMING — without disabling streaming when the flag is absent.", "evidence": [ { "resource": "repo://src/agent/index.ts#L1227-L1247", "version": "repo-lines-v1:sha256:3d45c216b9ff530047d7b0fa844a26eb18c7af591059dd71f3dbc90dcbba29b1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUzNGVmNmYyMjhjNTVkNzgxN2MxM2ZhZDg5YzAzZGQxYzA5NTI3YTlmMjBiZGY2ZTFlOTRjOTc3ZWYzNjRiNjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhM2U0NmY5NDI3NmI2ZjZmNGVkMWYwMmFmNzhiZWY2YTJlZTFjNDM5ZGQ1NTg0Yjk3Mzk0ODMxMzIxNGQyYjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVlMTJiNjExODk0M2UzMGMwMDY4MzNlNzgxNjMwYTUzYjMyZjQxN2VmNWY5Nzk1YzNmMTJmMzMwODAyNGM1ZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFiN2Y5ZDdlZWFkMGNhNmYzZmY5NWNjZDBhNDlhZmJjNGM1MjAwM2IwMDI5Mjg2OTFhYzIxMTI4YjBhZmM3ZjIifQ" }, { - "resource": "repo://src/config/constants.ts#L479-L485", - "version": "repo-lines-v1:sha256:330119afa2958d2070090c8f25f7ce5c9cc4ff2530ccbdf0a5f54780811aad1f:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjVlZGM1YjRlYjA2OTkyZGZkODMyNjQ3MTc4NTYxOGY3OGI2ZWMyZGMxYTI4NzA4MjE3NTdiZmI4YTczMjY2NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDk0ZmMwYzE3M2QxZWMzZmM1MDFkN2RmYTkyODU1MDFjNTI3Y2ZiNDcxMjU4M2RhM2NjMzYxODA1NjZiNGJlMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTc2YmUwMjY4ZDNkYTMxZDc2NDVmZjhlZTk2MmM0YjNkOGRjMGQwMzBlMDk0MzUwYTFkMjA0OTliZTNkZjc3YSJ9" + "resource": "repo://src/config/constants.ts#L483-L500", + "version": "repo-lines-v1:sha256:b9c730b8d38e76044fc6e2d21124fa629efc4cdbe0129b22bdf39aedd23787b4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI1ZWRjNWI0ZWIwNjk5MmRmZDgzMjY0NzE3ODU2MThmNzhiNmVjMmRjMWEyODcwODIxNzU3YmZiOGE3MzI2NjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk3NmJlMDI2OGQzZGEzMWQ3NjQ1ZmY4ZWU5NjJjNGIzZDhkYzBkMDMwZTA5NDM1MGExZDIwNDk5YmUzZGY3N2EifQ" } ] }, @@ -222,7 +222,7 @@ "evidence": [ { "resource": "repo://src/agent/index.ts#L451-L537", - "version": "repo-lines-v1:sha256:2caf3467cdcaba5ef42b2996a4203997fe04c5089be89fce7d62c209cc48a23a:eyJzZWxlY3RlZExpbmVDb3VudCI6ODcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFlYTgxMzMzMDFjYTJkMGFhNGIxZDgyOWRhNTdiMjgwYzU5ZTg2ODA0M2ZmNGI5MjkwYTE5Yzc4ODYzMTY4ZWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI1OGY5NjIxMTQwMGQ3ZTVkMDI1NDY0NjdiMzc0MTQyMDI0YzRkN2IzN2UyZDc4YzRkNzhjNjQwZmNkMTg3YjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk3YTg4YTgwYjZmM2VlZDFiMTM5ODYxOWNjZTAwNGM0MDlkMTczNzFmNjdhY2E2ZDU4ZTY4MTA3MTYwNmVlNTMifQ" + "version": "repo-lines-v1:sha256:b4f5cfa9612fde9fb57f17af11e5c99e275feed1673a9bb7be8350c512b1ad59:eyJzZWxlY3RlZExpbmVDb3VudCI6ODcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFlYTgxMzMzMDFjYTJkMGFhNGIxZDgyOWRhNTdiMjgwYzU5ZTg2ODA0M2ZmNGI5MjkwYTE5Yzc4ODYzMTY4ZWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI1OGY5NjIxMTQwMGQ3ZTVkMDI1NDY0NjdiMzc0MTQyMDI0YzRkN2IzN2UyZDc4YzRkNzhjNjQwZmNkMTg3YjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk3YTg4YTgwYjZmM2VlZDFiMTM5ODYxOWNjZTAwNGM0MDlkMTczNzFmNjdhY2E2ZDU4ZTY4MTA3MTYwNmVlNTMifQ" } ] }, @@ -429,30 +429,34 @@ "statement": "OPENWIKI_OPENAI_COMPATIBLE_STREAMING is an opt-in HTTP-transport flag that forces the streaming transport for the openai-compatible provider (because some gateways reject or return empty content for non-streaming requests), a distinct axis from OPENWIKI_OPENAI_COMPATIBLE_STREAM_MESSAGES, which only controls LangGraph's TUI stream mode.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L1035-L1056", - "version": "repo-lines-v1:sha256:847c27d3179c9878da589161d41bed5f96e7ae22e06f7fb5a27806acef3c0f81:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5MWQzNmVhYmRiYzBjY2I1OTNjMGE0MjRhMDk1YmIxZGIwZTU2OTkwYWMzNGUwOTJiZjg2YzYxMWRiMzdjMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ0ODA4OGNkMTU3ZDUwMGRiOTk1NDQ4NTY2OTE3YzM1ZjI3NDY3YzRlY2I0OWIwN2RkY2ViZjE3ZjViMGU2MGIifQ" + "resource": "repo://src/config/constants.ts#L1035-L1071", + "version": "repo-lines-v1:sha256:019712bf504cc00982fe2588e0416b934b49c7014a95897088cd92a73dd72365:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg5YTYzNjA0OWFhNjY0NGFlZDVmZTk3NDIyZjllOGQ1NTlkNjIxZmUxZmEwZWRlMzdmNzA4YzkyMDc5YjRmNzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAxMTk3MTc3MDc3NmU4YTY1NTYwMjczZjZjYjRhOWJkMWEyMjMyOWU5ZjZiYjAzYjZmNDJkNTU3MGZiMDFkYWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ0ODA4OGNkMTU3ZDUwMGRiOTk1NDQ4NTY2OTE3YzM1ZjI3NDY3YzRlY2I0OWIwN2RkY2ViZjE3ZjViMGU2MGIifQ" }, { "resource": "repo://src/config/constants.ts#L17-L22", - "version": "repo-lines-v1:sha256:633b85c02a042a8eee1f5eae43adfc1dab966adfef088d478024924605bd2090:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGI0NDFjYjEwNzNiNmMzYjc2NDE5Y2Y0OGY1OTYxNGQ3ODZlOWE5YzgwZGUwOTIxNWRjMzI2ZjVjMTU5YjE2OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGE0MzgzODA1MjliZGI3YWJhOTcwZDg4MzEyMjE5ZTY4OTIwODBmNDllYzdmOGFmZWJjNThjMmY3NmEzMGY0YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDM1NmIzNmU1YmZjOTJkMzUwZTk4ZTg1YzZjZjZkNmY0ZTE3YWU2MmExNWIwN2FiZmYyZDIwY2ZjZjI3ZDA1MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzAyZGI4MTY5MDNmMWJkYTNhZTc3MTg3NDE0YTlhNWQxMjhhMDgxNGFhZjEyNjEwZGQzYzRhZDM0YzkwNmM2YiJ9" + "version": "repo-lines-v1:sha256:a28b3abc76ab45c26e63f4b3912d8267c8955a293578c3d6b83abc9d65048117:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmE2MjMzYjMzNTBmMTliOTA3MzA0MjFkZjAwOGM0OGM3NjlhYTAyZjhjYzlhMmY3ZTRlN2JhYTc3YTJlZjY5MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWNhMTQ4MmVkOTdkZTk3OGQ2ODAzMTZhNmFmMDBmMDQ1OWMwNGYxZGZiNDM2MDhjNDExZDYzZjExZWMwZDljYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGY5ZTRiZWY0MGE2ODQyZGJlNmM5MmU3OGFiZDNjMzI3OTEyMzg4YmM3YmM5NjYzYWUyNzUyNmExMzczOGZkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzJmMWRkZWEwNjliZmZiZjFhOWJmZTdiN2ZkNDk3MDA5NjZlNmExOWQyYjUwZDA0MDQyNjkyZmIzNTRlZGU3MSJ9" } ] }, { "id": "claim_c41952a33c324e83bdfe1d69943cfe66", - "statement": "The provider-neutral OPENWIKI_MAX_OUTPUT_TOKENS setting caps per-request output tokens for every provider; createModel translates the single value to each SDK's field name (maxTokens for OpenAI/Anthropic/MaaS, maxOutputTokens for Gemini), and OpenRouter's legacy OPENWIKI_OPENROUTER_MAX_TOKENS cap takes precedence on openrouter runs, with the limit omitted entirely when unset so the provider default applies.", + "statement": "The provider-neutral OPENWIKI_MAX_OUTPUT_TOKENS setting caps per-request output tokens for every provider; createModel translates the single value to each SDK's field name (maxTokens for OpenAI/Anthropic/MaaS/Bedrock, maxOutputTokens for Gemini), and OpenRouter's legacy OPENWIKI_OPENROUTER_MAX_TOKENS cap takes precedence on openrouter runs. When unset the limit is omitted so the provider default applies — except for Bedrock, where resolveConfiguredMaxOutputTokens falls back to resolveBedrockMaxTokens (default BEDROCK_DEFAULT_MAX_TOKENS=16000, overridable via OPENWIKI_BEDROCK_MAX_TOKENS) so the Converse API no longer caps output at 4096; Anthropic's modern-Claude default is a separate, Anthropic-only behavior.", "evidence": [ { "resource": "repo://src/agent/index.ts#L1085-L1096", "version": "repo-lines-v1:sha256:47994cad7f67b2b000775bebcbfba9bfb7bd260031d2162ddb5897a3169adbeb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjMzY2NGVkZDQwMTkyYzQ0N2U5OGIyZDMzZDI0NWRhOWVjNDU1M2IzOTEzNmMyODJlYzE1OThhZTllOGQzMTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM1MjEzYzg3MGFkNmU3OWQwZDc3ZTJkYTUyYjJkY2RmNjhhMmY3NTc2ODQ3OGU0OWVlZjIxMGNhNzM5Y2MyYWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg2MTRiMTI4OTAzMDk4MmUwM2ZmY2RlZmY3YWY0MzI1ZTRhODRjOTEyMDgxZGE1ZDA5OWFmMTU0ZTJiZTQyNmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU4OTFkM2M2ZWU1NTNmMzU1YWE5NjJjMDMwY2ZkN2Q0ZGYzZmJkODExMzUzOWU5NGI3ZGE3ZGE2MmQ5MjJlNWYifQ" }, { - "resource": "repo://src/agent/index.ts#L1199-L1215", - "version": "repo-lines-v1:sha256:b6bfad2432fb89d9402cc845c9cc8848a921238290e1e70be16b2fb2d23888f2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI0NTNkYjI5ODE1ZDAyNjBjODMxOWQ2MTMwYjdlMDFkZDI5YTgxYzQ3NTA4Y2IyMzRmY2FhNGZhNjU2NGNlOTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVlMTJiNjExODk0M2UzMGMwMDY4MzNlNzgxNjMwYTUzYjMyZjQxN2VmNWY5Nzk1YzNmMTJmMzMwODAyNGM1ZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA1OGQ4ZjQ1ODgwN2VlNWRiZjM0ZDQ0N2E2NzJjMTc2YzU4NjFlM2UzNTcwZDViNjRjZWRmMjY3MWEwZWMxZjYifQ" + "resource": "repo://src/agent/index.ts#L1217-L1225", + "version": "repo-lines-v1:sha256:a72dab75357245dfb8e75d80ee5d8611047c0c0676079a91dd31f59ed387ea0a:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzc0ODg5NjE0MTI0ZmYwYmFkM2MxZTNhMzAyYzRlZjAwODVhMGQzMWFkNGJiZGE3OGUwNDBlNGY0OWE4YzlkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWUxMmI2MTE4OTQzZTMwYzAwNjgzM2U3ODE2MzBhNTNiMzJmNDE3ZWY1Zjk3OTVjM2YxMmYzMzA4MDI0YzVkOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjMzNzdiYjRkZDMwYmM0OTg2YzU2ZjIzYjdmOWQyM2FmMmYyNGVmNTlmMGM2ZDg5NDRlYWQwNWVlNGY4N2RkYiJ9" + }, + { + "resource": "repo://src/config/constants.ts#L1098-L1132", + "version": "repo-lines-v1:sha256:cebc4dc52dce5788155e2c82e5422e86f1c977a6c3b9e4568134fb7c4e4806c1:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyNzA2OWRkN2IyNmMxOWU1MmNjZjM2ZDg3OTFkZWFhZGIxMTFjNmZkZTgyMWVkNmNhYmYyMTljYjQxZWIzYTgifQ" }, { - "resource": "repo://src/config/constants.ts#L1083-L1107", - "version": "repo-lines-v1:sha256:5e95f924fd1133eb4e8509064128b46830807a53c97bc01e3dbe2ef82936f612:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyNzA2OWRkN2IyNmMxOWU1MmNjZjM2ZDg3OTFkZWFhZGIxMTFjNmZkZTgyMWVkNmNhYmYyMTljYjQxZWIzYTgifQ" + "resource": "repo://src/config/constants.ts#L1167-L1198", + "version": "repo-lines-v1:sha256:09c26aa550be540a89881dba2576e54e8f07e07071e3458d948eef1ee500b527:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY2OGY0MmNmMjMzODEzZWQwY2NiYjkyNWNhNzBhY2M3NDA0OWM1Mzk4YTRjNzk4ZmJkMDIxMTQxMzhiM2QyNzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQyYTg2YjZhMWRlMWQzMmIxNzNkOWVmMzdlZjRhOGM2ZjZmY2VhZjVkNjY4NjM3MDgxZmUxYzg5NWFhN2FkNDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFjOTg4MGYyYTVmZjQyYjA2MTA5NWIyNmRmYTI1MGRlMDEwYWRkMzY3Y2FjMzFmNjlkZGExYzUwNmY5MGMxM2IifQ" } ] }, @@ -465,14 +469,14 @@ "version": "repo-lines-v1:sha256:a72dab75357245dfb8e75d80ee5d8611047c0c0676079a91dd31f59ed387ea0a:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzc0ODg5NjE0MTI0ZmYwYmFkM2MxZTNhMzAyYzRlZjAwODVhMGQzMWFkNGJiZGE3OGUwNDBlNGY0OWE4YzlkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWUxMmI2MTE4OTQzZTMwYzAwNjgzM2U3ODE2MzBhNTNiMzJmNDE3ZWY1Zjk3OTVjM2YxMmYzMzA4MDI0YzVkOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjMzNzdiYjRkZDMwYmM0OTg2YzU2ZjIzYjdmOWQyM2FmMmYyNGVmNTlmMGM2ZDg5NDRlYWQwNWVlNGY4N2RkYiJ9" }, { - "resource": "repo://src/config/constants.ts#L921-L958", - "version": "repo-lines-v1:sha256:410f3c4191614997751e0ef334e9ca5781ddc569e9293ad56bee3b76061e9e8d:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFkNDc3MmVkMjY2NmQ2ZWEwZGFkNTlkYTZmNjM1YWNmMDM0MTVhYTczNWRiMWJjODYwOWJiZjkwMTY0ZGU3NjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY0Mjg1OTc1NTcwOGQ4ZGE4ZGI2Y2Q5MzMyMzEzZDdlOWY1M2IwZTVhMzRlNjYyZGM3MjhiZGYxNzQwNmE0NjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM3MzM1NjM0ODFjOWMzZjdmNjdiZGVkZDMwYzRmMzcxNjcwOWMzMDhjNmVmZTFkNzAzYmY5ODFjZTU1ZWRiODkifQ" + "resource": "repo://src/config/constants.ts#L921-L973", + "version": "repo-lines-v1:sha256:c7f45863ea0de8f42caf11a1d9c56adea07275d9ac7292e21331282b07a86a64:eyJzZWxlY3RlZExpbmVDb3VudCI6NTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjZDUzYjAxMjFiYTVmZWQ1ZTQ3YTg4ZWJhY2Y3ZjdjNDQxYjA3ZjZjNzE2NjYwODYzMzEzNWNhNzE5MjQzZTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFhM2NlYTUxMjU4OWUwMmY2NmUzZGRkMzcxZjQyYjNiNTZkMDJlN2MzYjA1ZDJmMWNjNzFmMzQyZWY1NTQxNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM3MzM1NjM0ODFjOWMzZjdmNjdiZGVkZDMwYzRmMzcxNjcwOWMzMDhjNmVmZTFkNzAzYmY5ODFjZTU1ZWRiODkifQ" } ] } ], "verification": { - "by": "openwiki/0.4.0", - "at": "2026-08-26T20:17:27.397Z" + "by": "openwiki/0.4.3", + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/architecture/overview.json b/openwiki/.claims/architecture/overview.json index 86ce3fe33..92b7f475e 100644 --- a/openwiki/.claims/architecture/overview.json +++ b/openwiki/.claims/architecture/overview.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:48905742af3df5cc56792f8eede01b7ae43c305abbbf2dc63ea3ce70bc414cf5", + "pageVersion": "sha256:3ea1b40752b351f31e1f67f490ab2465e69acc80c4a762966d9d385afb1c2f47", "claims": [ { "id": "claim_d6e01c84202f48bfbc7c9eac241db2e6", @@ -25,8 +25,8 @@ "version": "repo-lines-v1:sha256:b6cc4bd51c069bbc5f29ac5c87a0212aef93f3ded408d67bda4ed9050b43989c:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjZjYzRiZDUxYzA2OWJiYzVmMjlhYzVjODdhMDIxMmFlZjkzZjNkZWQ0MDhkNjdiZGE0ZWQ5MDUwYjQzOTg5YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjZjYzRiZDUxYzA2OWJiYzVmMjlhYzVjODdhMDIxMmFlZjkzZjNkZWQ0MDhkNjdiZGE0ZWQ5MDUwYjQzOTg5YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDAzMDk1NjQ0MzkxYThlNzU2ZGM4NGZjOTVkMzI4MDYxNTc3YTI1YmE4OGExNTkxZGUwODY0MjQ4NzllYjE4NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmUwOGZmNzJiYmNlYmMxZDFjMmU5NGE0NTVjYzNmMGQ2ZmQ3YWMyZTA5NzU2ZWI1OWU1ZTI4MDYyZTQxNThlZSJ9" }, { - "resource": "repo://src/cli/commands.ts#L146-L160", - "version": "repo-lines-v1:sha256:fee0e4aac04de6562453a0094c71af55ec49a34e069b48625142105f2ad3c3bd:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyZjA3ZjQ4OTI5NDMxMjkwNWM5Y2MxOTI0Y2RiNmJkZDE3NWNjMTIwMDM2MjhlZGRiYTk5YzNkZWIxYjY4OTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2MDU5MDI0ZDQ1NjRhZTBmZWJhNWQ3MzhlM2I0OTUxNTczMGY1Mjg5OTdhOTM1ZWQ3ZGNmMDBkODQxNWRkYjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQzZGNjZjA3Y2YyMWEzODkxODJhM2I0NTVkNjQ4N2JhODU3NWMwZDFjYTRjOTJiMTIzNTgwYjNkOTcxYjUyOWMifQ" + "resource": "repo://src/cli/commands.ts#L146-L159", + "version": "repo-lines-v1:sha256:8ed49460eaed0f45264d8e7ff3ed9ccf340f351101202e595389ed26ef639d46:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyZjA3ZjQ4OTI5NDMxMjkwNWM5Y2MxOTI0Y2RiNmJkZDE3NWNjMTIwMDM2MjhlZGRiYTk5YzNkZWIxYjY4OTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2MDU5MDI0ZDQ1NjRhZTBmZWJhNWQ3MzhlM2I0OTUxNTczMGY1Mjg5OTdhOTM1ZWQ3ZGNmMDBkODQxNWRkYjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQzZGNjZjA3Y2YyMWEzODkxODJhM2I0NTVkNjQ4N2JhODU3NWMwZDFjYTRjOTJiMTIzNTgwYjNkOTcxYjUyOWMifQ" }, { "resource": "repo://src/cli/commands.ts#L26-L26", @@ -34,7 +34,7 @@ }, { "resource": "repo://src/cli/commands.ts#L972-L973", - "version": "repo-lines-v1:sha256:23ee59276bcfc48813cc20891b5a745ece9c266e7456a9022d42493af14a708c:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWRiNjg5MzRkMDcxN2FjZTM5ZDA0ODJhNDkyYzhiZTRkYzg4YTFkNGNhOGU5Yzg0MDM4MmJiOWI5YTA1NWM3MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjA3ODliYjZhZTlkNWI2MDFhMzZkYzMxOWFhZDM4Y2ExZWQwM2EzMWNjMDI4NWQ2ZDY5NzhlNjg4NWRlNDY4MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzgwNWQ2Njk4OTFlZWVmZGQ1ODU5MzczMjJjYTJkOThjNTFhMjNjY2U5OGE1YjQ0NTIyMGMwMGVjOGUwMjA2NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmYzOTdmOGZhNzkwOGM3MWExZTMxMzQwODAyOTY0OTRlNjJmMzliNTM5NmY0Y2RhZDQzMmNjMzM3NDM4Zjc3ZCJ9" + "version": "repo-lines-v1:sha256:a276af72b39564df82cd8f358afa0cabd1613a9320cd6e47c0fd51223e4d7ac9:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTY2NzBiN2ExNWVhNzYyODRiN2Y1MDU5YzRjZTA0MjEzYjM4MDYyZDM1OWExYzkyYzUzM2UzZjQzNWJiMGE4OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzY3N2ZlMWYxY2QxYmEyY2ZjYzcwYTY2MWVlYjFhYjhhOWMyZjRlMmQxMmE5ZWYyNGQ1MTk4NjY0MmMwMTc5YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2ZmNWI1NThkMWVkNDE4ZjM2N2ExYWMyZDJmMDEzNzZlNmM3MjMyOTg0ZWNlYzYxZGU4OTUyNGFmNmIyNWQyMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDg2NDA3OWFiMjVjNmZkMjNjYTRhOTJjNmNkYjQ2Mzg4YmMzMjAzZjlhMjk3ZjVmM2U4MWY0MzU4YmY4OWZjNyJ9" } ] }, @@ -53,8 +53,8 @@ "statement": "runStandardCommand dispatches the standard command kinds (auth, ngrok, cron, ingest, visualize) to their runners, prints a startup error, runs non-interactively in print mode, or renders the interactive Ink TUI App.", "evidence": [ { - "resource": "repo://src/cli/cli.tsx#L60-L116", - "version": "repo-lines-v1:sha256:87788b6fa5eec24806208bd37a974bef8150c585e70945a089f59daa062f57f5:eyJzZWxlY3RlZExpbmVDb3VudCI6NTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGM4ODRkYjNiZjQwOTk4ODNmYjZhOTg0ZTgwZmM3OGU0YTcwZjE5MDQ1YzlmMmRkZjFlZjU0N2VkMjY3ZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMjUwZWQ5NDIwZjE2YTYyOTgzNzAxZWVjYmY0YzIwNmY4Y2MzY2ZhMGVjZGQ5NTQyYjY4MTJiYzg2ZDc5YTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + "resource": "repo://src/cli/cli.tsx#L60-L110", + "version": "repo-lines-v1:sha256:ade304fda6a2c581bae7240b913feef716e695b113b4a7c6ed181c94781e61b2:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGM4ODRkYjNiZjQwOTk4ODNmYjZhOTg0ZTgwZmM3OGU0YTcwZjE5MDQ1YzlmMmRkZjFlZjU0N2VkMjY3ZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMjUwZWQ5NDIwZjE2YTYyOTgzNzAxZWVjYmY0YzIwNmY4Y2MzY2ZhMGVjZGQ5NTQyYjY4MTJiYzg2ZDc5YTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEifQ" } ] }, @@ -63,12 +63,12 @@ "statement": "parseCommand produces a discriminated CliCommand union whose run variant carries the resolved OpenWiki command (init, update, chat), mode, model id, print flag, and user message.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L107-L165", - "version": "repo-lines-v1:sha256:228e1c0e10690c88e3cba37ffadc0e2bbeffd4ca0f4c21c9e50a22db263c5d89:eyJzZWxlY3RlZExpbmVDb3VudCI6NTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmOTU4MjYzYTk0OTgyNzBjOTI3ZTA4NjllN2ExYmZkMGE4NzNiYmYwNjU2MDg2MjZkNzllMDUwMzI3ZjViZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkOWUxMjU0NjQyNTU3NmQzZGVhZThjOWI5ZGJmMTI4ZDVkNmRkYWY1ZDdmZTg1NzkzNDkyN2RlZmZhM2I5ZGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ4MTMwNjI4MGYxYzY3OGQ4YTE1ZjM0YTA1NjhjZmEyMDQ5NTE4ZGRjMGUxNzU4YzZjYTVhZjdkYmJkNWU1ZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkyZjBiYjQ5YTNiNGJjYjIwYzBjNWU3ZjJjNjYzNWRjOTE2OTVmYjkwZjU0ZjY5MGIwNGY0YzE3NTM1Mjg3ZDgifQ" + "resource": "repo://src/cli/commands.ts#L107-L164", + "version": "repo-lines-v1:sha256:904e3b186fcfa3b42b8382f08b2f0aea9dbac28577ed62536012687b8ce791e7:eyJzZWxlY3RlZExpbmVDb3VudCI6NTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmOTU4MjYzYTk0OTgyNzBjOTI3ZTA4NjllN2ExYmZkMGE4NzNiYmYwNjU2MDg2MjZkNzllMDUwMzI3ZjViZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkOWUxMjU0NjQyNTU3NmQzZGVhZThjOWI5ZGJmMTI4ZDVkNmRkYWY1ZDdmZTg1NzkzNDkyN2RlZmZhM2I5ZGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ4MTMwNjI4MGYxYzY3OGQ4YTE1ZjM0YTA1NjhjZmEyMDQ5NTE4ZGRjMGUxNzU4YzZjYTVhZjdkYmJkNWU1ZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkyZjBiYjQ5YTNiNGJjYjIwYzBjNWU3ZjJjNjYzNWRjOTE2OTVmYjkwZjU0ZjY5MGIwNGY0YzE3NTM1Mjg3ZDgifQ" }, { - "resource": "repo://src/cli/commands.ts#L169-L199", - "version": "repo-lines-v1:sha256:69deabfca6519c13bead16d749bdeb54a5dff4003cbe345a18bfbcd9f2cc7a44:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA1ZmY1YWU1NzIyNWZhMWY0OTE2OWY1Yjc0YmQxZTFhZGRhNGU4YzQ0YjFjOTI5YzdlMzk2ODE4YjcyOTAzZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM2OGMwMzg0M2MxMzM5MWYyNGI2Njk2ZGYxNmZiMjM1M2U1NzE4OGRjNmJlNmEwNzRmOWUxMDZjYTdjOTU1MmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkyZjBiYjQ5YTNiNGJjYjIwYzBjNWU3ZjJjNjYzNWRjOTE2OTVmYjkwZjU0ZjY5MGIwNGY0YzE3NTM1Mjg3ZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI2ZGM3MmQ3ODU5OTA4Mzg2ZGFiN2RhNmVhNDJmYjMwYzYzMmI1ODk0YTBkZDAzZjQ4MzljNWYxYjlkYjQ1MTYifQ" + "resource": "repo://src/cli/commands.ts#L168-L199", + "version": "repo-lines-v1:sha256:c424da8d2c066c405031694d4c8291d50c24ed5302e846e13fb0718129f15860:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA1ZmY1YWU1NzIyNWZhMWY0OTE2OWY1Yjc0YmQxZTFhZGRhNGU4YzQ0YjFjOTI5YzdlMzk2ODE4YjcyOTAzZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg0ZTQyMDhjZDZmZmI4YzRhMzU0N2IyZjU0YWRhMTk5NzhjM2YzNjVlNzhmOTUwMmVmNTE0NWNkZDJhYTg1NDMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkyZjBiYjQ5YTNiNGJjYjIwYzBjNWU3ZjJjNjYzNWRjOTE2OTVmYjkwZjU0ZjY5MGIwNGY0YzE3NTM1Mjg3ZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAzMmM3ZGY5NThhZDEzYWMxZDc0NGE1ZjdlNzU0NTFhNjJjZDM5NGIwYjgyN2JkOTc1NGY5YjU1YjQyYjk5OGEifQ" } ] }, @@ -178,7 +178,7 @@ }, { "id": "claim_d9cf0601a9214a888642087d29b86695", - "statement": "Host-driven generation exposes exactly five transport-neutral MCP lifecycle tools (openwiki_begin, openwiki_submit_plan, openwiki_next_page, openwiki_submit_page, openwiki_finish) that back the same durable repository run lifecycle used by native generation.", + "statement": "Host-driven generation exposes exactly five transport-neutral MCP lifecycle tools (openwiki_begin, openwiki_submit_plan, openwiki_next_page, openwiki_submit_page, openwiki_finish) that back the same durable repository run lifecycle used by native generation; openwiki_begin rejects an unrecognized language with invalid_input instead of starting a run.", "evidence": [ { "resource": "repo://src/integrations/core/protocol.ts#L11-L19", @@ -186,7 +186,7 @@ }, { "resource": "repo://src/integrations/core/session-manager.ts#L214-L252", - "version": "repo-lines-v1:sha256:b3e5359255e6e1c37ea9b3201031e31c39dec55a8ee3f8e5813c5fb330623563:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5ZjE3MzRhNjk0ZWVjZDFmMzFiMWNmYTdjYzY4OTZlZjdkOTZmYzY1OTYyMDAwZjUzOTQ3NjBhYzkyMmVmMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI1MGQ3ZmRlNjc4YWEwOTU2MDBlYTE0OTg0Mjc3ZjYyNThhNWEzMjNhYzQ3NDY0ZTcyZmFkZTk2ZGE4NzUzZDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhOTBlZjcyMzRmYWY2MGU1OGI5YjI2MTRiYmY5YTgyYzc3OTI3M2EyOWIxZTdjNmI4ODA1YjA5NjM5NTRkOGQifQ" + "version": "repo-lines-v1:sha256:66e49770619047379f348c5abd627f3f90cc669cc01156e779031e3914c53da2:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5ZjE3MzRhNjk0ZWVjZDFmMzFiMWNmYTdjYzY4OTZlZjdkOTZmYzY1OTYyMDAwZjUzOTQ3NjBhYzkyMmVmMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI1MGQ3ZmRlNjc4YWEwOTU2MDBlYTE0OTg0Mjc3ZjYyNThhNWEzMjNhYzQ3NDY0ZTcyZmFkZTk2ZGE4NzUzZDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhOTBlZjcyMzRmYWY2MGU1OGI5YjI2MTRiYmY5YTgyYzc3OTI3M2EyOWIxZTdjNmI4ODA1YjA5NjM5NTRkOGQifQ" } ] }, @@ -297,10 +297,28 @@ "version": "repo-lines-v1:sha256:bbe2d848000d03ea31000a9daa62c57da4186b520927b487c2d542adbbebea95:eyJzZWxlY3RlZExpbmVDb3VudCI6NDksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViOTVhMDI5MjZhZDBkOTMzNThjMDRiOWJiNGE2NmNhYWU4YWFiOGY1MGIzYTA5ZDA1OWZjZDY5NWE5NDEzNjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFkYjNlN2NkMGMzYTYyMzA0NzY2ODE2MWQxMDRlOTlkODYyMDljYTNlNzc1NGEyNWIxMTlhNDkwNzg3ODA0MjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzNjlhNTkwZjQ3MDRlNTMxYmY4OGYyNDc5MmNiYzJkZTBiYTY3ZGYzM2Q4ZmJkOTk4ZDhkYjg3MjM1YzcyZGEifQ" } ] + }, + { + "id": "claim_c32f56987db645ccbc2848d03a228734", + "statement": "beginRepositoryRun rejects an unrecognized language with invalid_input before touching the repository, so a typo never persists the wrong language in run state; the host-facing openwiki_begin tool exposes the same behavior, failing the call instead of starting a run.", + "evidence": [ + { + "resource": "repo://src/generation/repository-run.ts#L319-L330", + "version": "repo-lines-v1:sha256:0a6c28b2efbce2295a2dcdb8e373f537dd54b495b23b6837d75c8fc1af39b3c4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2Y2E3NDliMDVmOGZiY2I5YWU0ZWY5MWJiZWQ2YWQxNjJkYmM5NWZkMmNlNzRhMzJjZWZmYjk1ZjkzNGQ3ZDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImExNmRlYzgyYWJjODYwOWJlZTAzZjk5MGU4MDE4YTAwNGFiNTAzNjAxYzMyYjRhZGUyOTgwNDBmN2M0ZjQzYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2NDcwOWNmZDM0NTE5NTdlOTc3NTczOTNkZTQ5YzVjZTdlZWQ3M2EyMGI3ODQ4ODQzMzcyNDE3MWQ0NGI1MGUifQ" + }, + { + "resource": "repo://src/integrations/core/protocol.ts#L36-L42", + "version": "repo-lines-v1:sha256:efe85192ad4f45435553cbf221709b8315ce78193f43cf115b095786fae6a8d3:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzM2ODQwYTkwNjRmMmEwNjI5MzI0MTVmMWFiMjI5MmU4YzI3N2RkYjNmYzBlY2MxNDk5ZDBlNDkwODUzZmM0NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWE1ODgyZDViMWMwNDQxNzMxZGI2OTY4MTgxNDgzYzFlMTQ3NDdjY2VkMjI1YzZhY2MxODFhNDgzYTI4ZDYzYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODQ0M2VjMWNkZjg3ZWJlYzAxNGMyZGMxMTUzODUyOGY0ZGFlMzY2NjUzYTdhZDUxZjMwYTBiMDg4YWY4YmMyNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjU1NTg5YjRkNmY2MTEzMGVmNmFhYTk3YzE3YWRkYzVhNGRjOTlhNDVmM2U1ZGRiNzhlOTM0ODdiZjYzZjU5OCJ9" + }, + { + "resource": "repo://src/integrations/core/session-manager.ts#L214-L222", + "version": "repo-lines-v1:sha256:aa10be3142ecaa28aefefe5e80717ae107bfbb2e2e326e847955479286cad8de:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzlmMTczNGE2OTRlZWNkMWYzMWIxY2ZhN2NjNjg5NmVmN2Q5NmZjNjU5NjIwMDBmNTM5NDc2MGFjOTIyZWYyMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjk3OGUyNTAzYjhjZjM3YTA2ZjdkNmYwYTNhNmI2ZmUzNTY5MWZiY2FiNTBiODc3NWNhYjZmYWJjNzFjNTkyYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjUwZDdmZGU2NzhhYTA5NTYwMGVhMTQ5ODQyNzdmNjI1OGE1YTMyM2FjNDc0NjRlNzJmYWRlOTZkYTg3NTNkMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDc2ZTY2MmRlNzYxODgwMzAwZTc3MDg1YzE0NmYyMTI2YzNjNjNhNzRiNTkyNWRkZWIzMzdmNmE1NTBiYzhjYiJ9" + } + ] } ], "verification": { "by": "openwiki/0.4.3", - "at": "2026-08-28T03:39:43.412Z" + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/architecture/source-map.json b/openwiki/.claims/architecture/source-map.json index 60481f915..a4cda8d27 100644 --- a/openwiki/.claims/architecture/source-map.json +++ b/openwiki/.claims/architecture/source-map.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:f5c91a09424a8ba09516ceddf6ea31fa1408e6652979b5b871af2f7f9a922520", + "pageVersion": "sha256:b80fa3949378bb9fa986472172da341e8ffe6bb5d52b26656221fee25a09d14c", "claims": [ { "id": "claim_b3bcf02b8ac0428c909611ba967f994a", @@ -46,55 +46,63 @@ }, { "id": "claim_55f7c1800e404584b9898923dcb423ea", - "statement": "src/config/constants.ts is the central registry of stable identifiers: the openwiki directory name, the page-manifest and update-metadata paths, plus provider environment-variable key names and defaults for every supported provider and the OpenWikiProvider union, imported across subsystems.", + "statement": "src/config/constants.ts is the central registry of stable identifiers: the openwiki directory name, the page-manifest and update-metadata paths, plus provider environment-variable key names and defaults for every supported provider and the OpenWikiProvider union, imported across subsystems. It also owns the output-token ceilings: resolveConfiguredMaxOutputTokens picks the provider-specific setting (OpenRouter's legacy OPENWIKI_OPENROUTER_MAX_TOKENS first, then OPENWIKI_MAX_OUTPUT_TOKENS) and resolveBedrockMaxTokens falls back to BEDROCK_DEFAULT_MAX_TOKENS (16000) so Bedrock's 4096-token default does not truncate long pages.", "evidence": [ { "resource": "repo://src/agent/index.ts#L76-L90", "version": "repo-lines-v1:sha256:4dd5aab2a164f5d036bc438dd69b087439808b654cd03fa647a826551aea535d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4MjAwOTY0YTk3ODYzNTUyMmIyYWIwOTBjNjUwNjVkOGVmOGU4NWM0NzMwYmIyZWIwNDYwZDM0YzY3N2RkYmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRhZjYzNjI1MWI3ZGI2Y2RkM2I1MjNiNTc1Nzg4M2VhOTYyY2Y1YmYxNzkzOTJmZDM3MWFkODAzNDU3YzNiZGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkxNGY4NTAyZWJhNDY3YWIwYzI0ZjhkMjI3MGU2MzVmYjdhOWM3OGZlYTAxOTUyMGQ5MTVkN2JkMWE5ODkwNzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJlMDcxMTQwYmIwM2FjMjgxMTI0MmM2MDg1NDcxN2IwOGU1NWQ5ZmZlMzliOTRhMjhlMTQxZjM4YjE5MmUyOGIifQ" }, { - "resource": "repo://src/config/constants.ts#L1-L60", - "version": "repo-lines-v1:sha256:bfe81635deae80c9ee0642cde0e7b605412c8e2069354db934f778335622d021:eyJzZWxlY3RlZExpbmVDb3VudCI6NjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRjOGNhNGM3NTBlNDRhZjdlOGMyZGY0NjZiNDAzMTIxMTZlNDBjYTg5Njc1MjY2ZTZiMzZlNjg0ZjU2M2YyNmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4NjBmMThkZGFmOWViMWE5YzVhZjBkZDA4ZDQyYTBjNWFlZGQ4NGU0ZTM3OTczM2Q4Njg4MDE3N2JkMTYyZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI5MThiN2JiMzM2ZTIxMDc5YzlmM2VlZWJlOGRlYWIwYmYxNTA0NGU4ZWIzNjczYmNmYzcyNTlkYzM2NDhmOGUifQ" + "resource": "repo://src/config/constants.ts#L1-L103", + "version": "repo-lines-v1:sha256:a892af9e4265ef1b503260ae429e4a5866c6c723a4b8bac2ae9b7f73ab1792a1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAzLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJkYzhjYTRjNzUwZTQ0YWY3ZThjMmRmNDY2YjQwMzEyMTE2ZTQwY2E4OTY3NTI2NmU2YjM2ZTY4NGY1NjNmMjZmIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI2ZTI0ZGQ0MzM2NDdmNTVmMzkwMDRkNDM5OTM0OWI5MmM5MzFiYzA4YzA5ZDM1NWJjMDJiNzNkN2JiOTJhYTQ3IiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MCwicHJlY2VkaW5nQ29udGV4dEhhc2giOiJlM2IwYzQ0Mjk4ZmMxYzE0OWFmYmY0Yzg5OTZmYjkyNDI3YWU0MWU0NjQ5YjkzNGNhNDk1OTkxYjc4NTJiODU1IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJlNzczYzQ3ZDU3ZGRmM2IwM2U5NmM0NWQ4N2RiYjNmYTM5MjhkYWQ1ODAzODUxZDcxYmIxNGVlMWRmMWI2YzRiIn0" }, { - "resource": "repo://src/config/constants.ts#L100-L116", - "version": "repo-lines-v1:sha256:5c811ad206a1e8beb6d0c12b7d7b81e75b83625c73241233fe3c1ee11a878991:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZlMjRkZDQzMzY0N2Y1NWYzOTAwNGQ0Mzk5MzQ5YjkyYzkzMWJjMDhjMDlkMzU1YmMwMmI3M2Q3YmI5MmFhNDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhZDAxNjFiNTM0ZGViNzM2ZGExZWRhYTQ2MTdkMjRlMDllMmVjZmFlNTFmNTFiMjEyZDAxNTRhNDA4NDc4Y2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdlYjRkOGU4Nzk1NWFhODMzNDFhYWZmYmU2MjY0Nzk0ZGNjOTUyNDMzYTgzZjcxNjdmYTVkOWUyZjM1MTc2Y2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMwMWIzZjNlYmY5OTA4OTk1MTQ1MzlmYzUwZmRlZmExYjY0M2I5N2E2OGRiMmQwNDI2Zjc4MzQ0OGRmZGJkZDEifQ" + "resource": "repo://src/config/constants.ts#L106-L119", + "version": "repo-lines-v1:sha256:0923e7c3f6e5995c61c8e060587a2b6a19ff6a3e2176de81b9619ddfcb81007e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5OTZkMGY5NDUxOWIxNTYwODVlNzgxNWYxNDIzODhmNjQ0MDQ5OWRiYWM1YTUzYTIxNTNlMWY0YjljM2ZhZWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhZDAxNjFiNTM0ZGViNzM2ZGExZWRhYTQ2MTdkMjRlMDllMmVjZmFlNTFmNTFiMjEyZDAxNTRhNDA4NDc4Y2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkxODY1MzNjODY3YTUxOWM1ODc5OTljNzgzYjNhNWQ4Zjg0ZTE0M2VlYzNkNDg3ZDRjNjM4ZDg4NTQ5NDdkOWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMwMWIzZjNlYmY5OTA4OTk1MTQ1MzlmYzUwZmRlZmExYjY0M2I5N2E2OGRiMmQwNDI2Zjc4MzQ0OGRmZGJkZDEifQ" + }, + { + "resource": "repo://src/config/constants.ts#L1110-L1198", + "version": "repo-lines-v1:sha256:3e28f861e52a14336a01cf8c531b3a7e4c79f3fe6ce828b2702c85ea35a03015:eyJzZWxlY3RlZExpbmVDb3VudCI6ODksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyNWI2MzNiNjc2NmEyZmJjNDRmMmU2NDJjZWViOGNjMGUwY2M3YjVkOWVhNDRmZDNkOGI4Yzc3MmRmMDdjN2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUwNzVjNzA0OTdhZTI1YmIxODYzN2Q2YzYwNGJmZGIzZTg0YzM0N2FiZmZlMTU0YWNkNDNmMGMyZGQ5MzViNzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFjOTg4MGYyYTVmZjQyYjA2MTA5NWIyNmRmYTI1MGRlMDEwYWRkMzY3Y2FjMzFmNjlkZGExYzUwNmY5MGMxM2IifQ" } ] }, { "id": "claim_b6eceaf0798842f8a4a63f136e0287ab", - "statement": "src/generation/repository-run.ts owns the repository-generation lifecycle, driving a plan-then-page workflow via beginRepositoryRun, submitRepositoryPlan, nextRepositoryPage, submitRepositoryPage, and finishRepositoryRun, plus the skip-failed-page-workers operations captureRepositoryPageSnapshot, skipRepositoryPage, and restoreRepositoryPageMarkdown.", + "statement": "src/generation/repository-run.ts owns the repository-generation lifecycle, driving a plan-then-page workflow via beginRepositoryRun, submitRepositoryPlan, nextRepositoryPage, submitRepositoryPage, and finishRepositoryRun, plus the skip-failed-page-workers operations captureRepositoryPageSnapshot, skipRepositoryPage, and restoreRepositoryPageMarkdown. beginRepositoryRun resolves the requested language up front (resolveLanguage) and rejects an unrecognized language with invalid_input rather than falling back to English, since run state cannot change its language after a start.", "evidence": [ { "resource": "repo://src/agent/repository-runner.ts#L9-L22", "version": "repo-lines-v1:sha256:25ce6bd69a9f0e4c6f56cf975ad6d59f6b0048d329ef79ce67de7ccd7c38ab13:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4MjAwOTY0YTk3ODYzNTUyMmIyYWIwOTBjNjUwNjVkOGVmOGU4NWM0NzMwYmIyZWIwNDYwZDM0YzY3N2RkYmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzMTQ3Y2Q0OWVhNzZkMTE2ZGZlMTIwYWZjMTk1ZTM4YjdkMTQ0NWU4Zjc0MWFkYjQ0MjQ5MWE1NTRlZDdmYjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJhOTYyNTNhNDhjYTA0ZmZjMDc0ZmE5Yjg4YmJmNGRkYTg3YzQwYTc3YmE4Y2VjNGFjZmViNjNjNGMxMGNiZTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRkMzViN2ZjMjM0NTM2MTE5ODA4YTlkZGEzNjgxMzQ2NWZkMTdiMjJkZjIyYjI5NWVlMjQzM2VhMTUyYmRmZmYifQ" }, + { + "resource": "repo://src/generation/repository-run.ts#L1000-L1111", + "version": "repo-lines-v1:sha256:c43680c2580e9949b365d5aa21bc9afd069157750abba01e649d165495dc54e1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEyLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJjZTk2ZGUzODQ0ZmIzYWU1MzZkMGRhZmZkODNlYTdmYjc0MmQzZTNmNThmMGYzYmRmM2RlNGQ4YzI1NmE1YTkyIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI0NGQzNjFkOGQ3MDZjMWZjOGM2MTMxMDY1Y2IyOWMxODU2ZmQwZDEzMzIzYTMyYjYzNzY4ODVlMWQ1NThiMjc2IiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiJkOTg0MzYyM2U2ODA2ZTI5ZWM1NmNiMjUzNTQxYjg4YTQwZTUyYzJiMTUzMWMxMWZjMDY3ODA2MmQxZjNlYjk5IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI5MjZhZGY2ZGIyMTQyNzhmYjAyNmE0OTBjMjcwMWFiMjAxN2I3YWEwNjc4YjM4NTRlMGU3MTlmMTgyNmJjMzg4In0" + }, { "resource": "repo://src/generation/repository-run.ts#L1128-L1142", - "version": "repo-lines-v1:sha256:3b3f0797c6df71438a21ee39b74e3a5f5b36eff3895316b9e7415acd93564e08:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5ODkxMjdkYjA3ZjBlNTM0NjYyMWI0YTUwNWU3Yzk4M2FhY2M4ZjVjNTIxNjc0ZjEwYTYxMDIxYmU0MmIxNWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVhODA0ODYxMTJlZjFkMzY1ZjU3ZjVmYjc5ZmYzZDgwOWEyMzI3YzBlMWIzODg4NmFmMmNlOGI2NGY3ODI0N2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI0NTMwY2VkZDQ5ZGE4Y2RiMjcwYTg0NGJiODEwNjBlMWU1MTdjNmMzYmYzZjI2NzE0OGUwNWI2MGJjN2YwYjgifQ" + "version": "repo-lines-v1:sha256:474f943cb9635bf74a729a90bdd689b3c08eecff3a4f5edeb45c328a4e994943:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU3ZmFmYmE2NTZiNWMyNmIwYzIzODA0N2UyMDFjNGQ0ZjI1ZWZiNWMzMmQxNjM4YTIzM2ZjYzI0ZGYxNGEwNDMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUyODllMTYyZWFhY2E5Yjk3YzVhODBlODZmZGI2ZmQ2YTNkOGRmNDJhNDFiYmQ4MGIyZjlkMjczM2VhNmFjY2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyZmQ0ZDI3YjdjOWQ1OTY3NDY3MDc0ZjI0MjJmMGE1ZDJjNTU3MWJmMjhkMTJhODU0ZWQyODVmNzEwZTI1NzEifQ" }, { - "resource": "repo://src/generation/repository-run.ts#L318-L328", - "version": "repo-lines-v1:sha256:78304efb33c0df9b5cbd645b0c0b7bdf90c983c0c896c5c88eac8fe2883069f8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2Y2E3NDliMDVmOGZiY2I5YWU0ZWY5MWJiZWQ2YWQxNjJkYmM5NWZkMmNlNzRhMzJjZWZmYjk1ZjkzNGQ3ZDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5NGY0MzgzMWMzMzEwOWRmNGVlNzJjZjJmMTM4NGE4MTU5YTBmNmY5MGEyOGE2ODdlZDM4NjQ2YTU2OWM0YWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImExNmRlYzgyYWJjODYwOWJlZTAzZjk5MGU4MDE4YTAwNGFiNTAzNjAxYzMyYjRhZGUyOTgwNDBmN2M0ZjQzYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJjZjAwMWU4NjMzN2NmZGEzZGIxMWMzMTZhOWZkN2E5YWQ5OWU3ODZmNDNjYjJhMmM2ZjFhN2ZhNDlkNjg2OWYifQ" + "resource": "repo://src/generation/repository-run.ts#L318-L332", + "version": "repo-lines-v1:sha256:27b17004d8901d3650c4ea6457ad7ff850d1c5220952eec0235419951ca3b47c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk3MmE0MjkzODJiMmUxNDcxOGUwZTM3YjA1NzBhOGExNzAyOTkxZmNkODQ5OGNkODQwNjBhOGJmNGYwNTAxN2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4YmIxNGZiNDYyNWViYjFiODRkODE0NTQzYTU2NGZhMDRiMWIzOGVhZTdjZmYxYjAzMDM4MGQ1NWQ5NDQxNjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRkNzY3ODMxMjdlNmJhNTYwOThhZjhmNzVjZDc3YzQ5OGJhN2MxZTdjZTBjMGI4MzBjZDZhNmFjYjcyMTgxOWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAzOTgwN2E5OTJjYTU4ZWMxMWQxNGQxMDc3NGUzNjEzOGRiMWQ0ODU3Zjg5MTNiM2FmYjU4M2ZlM2QyNWJkYTkifQ" }, { "resource": "repo://src/generation/repository-run.ts#L861-L989", - "version": "repo-lines-v1:sha256:2851187b7156cfbdc37a833811280696e191e1618d91a8cdd548e41ecd834231:eyJzZWxlY3RlZExpbmVDb3VudCI6MTI5LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIwNzdlMTRmMThiMGZiNmJlNDRjMWMyOGIxZjQzOGJkNzc5ZWE0NGZmYjdmYmNhYjI5ZDFjNWRkMjJkMDZlNDA4IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJjZTk2ZGUzODQ0ZmIzYWU1MzZkMGRhZmZkODNlYTdmYjc0MmQzZTNmNThmMGYzYmRmM2RlNGQ4YzI1NmE1YTkyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI2MDQ5NWZmYjRjNzQ0OTlmOTI0NGRlZDM2MDc3MGVmODYyOWY0MmI5MDFmNGNmNmUzYTY0ZjRmYTI4Zjc5NzFkIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIzM2NmN2FlY2Y2OTg3YmQ3YjQ0ZDBhYmMwODRiODhlZmMzMjFmNGM3YzgxMmMwYjJmODBiMTQwODIzYWJmMzlkIn0" + "version": "repo-lines-v1:sha256:6fb7e0864733e0690495a4cba75e8e8a51413619355478817922f7b2b7fbddf3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTI5LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI4NGU0MjA4Y2Q2ZmZiOGM0YTM1NDdiMmY1NGFkYTE5OTc4YzNmMzY1ZTc4Zjk1MDJlZjUxNDVjZGQyYWE4NTQzIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJhMjdjZWNkNjYwMGNkY2EzNWNhOTVmODJkMzgyNWMyMTQ4OWI4YjhmYzQ4NWYxMGJiNzU2MjVkMzBmOGE5OTk5IiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiJiMDg4Y2MwMmMzNzkyOTNjNjA2YTVkZmNmM2NhNGQ1ZTlmNzYyZjRiMjE5Yzk0NTAzNTE3ODI3ZmI5OGY3NzExIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI5M2ZkMzg0NmZlYzg4YmJkYmM4NWYxOGJhOGI0ZGEyZmJmNDdmNGYyM2ZlMTFmNjY4YjZlMjgwMjg1NWY3NzIzIn0" } ] }, { "id": "claim_a44b2c1f9ea84beb8fbe5d7d1f84c6a8", - "statement": "The repository lifecycle in generation wires together run state, the claims runtime and store, the wiki finalizer, and OKF frontmatter validation, importing parseFrontmatterFields and repairPersistedFile from okf/frontmatter.js and index-label resolution from okf/index-labels.js.", + "statement": "The repository lifecycle in generation wires together run state, the claims runtime and store, the wiki finalizer, and OKF frontmatter validation, importing parseFrontmatterFields and repairPersistedFile from okf/frontmatter.js, index-label resolution from okf/index-labels.js, and resolveLanguage/requireResolvedLanguage from platform/language.js so beginRepositoryRun can reject an unrecognized language before any run state is written.", "evidence": [ { "resource": "repo://src/generation/repository-run.ts#L1180-L1196", - "version": "repo-lines-v1:sha256:a6db58deb3cf60215b0527f2af01ffcbb7f3afa439d673e916e7bb7a684db6ad:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA4OGE0NTM5MTI0ZWFlYjNiNjBhZWMwM2QwNWVmNzU4NDcwZDc1N2I4MDczNTYzYjI0NjAzOTVhZGI1MGIzYjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFkYjNlN2NkMGMzYTYyMzA0NzY2ODE2MWQxMDRlOTlkODYyMDljYTNlNzc1NGEyNWIxMTlhNDkwNzg3ODA0MjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdlNGUyMmI2Y2ZlNzU1ZjE0YTMzZTY2N2E0ZTlkZGEwOWIwNDgxYWM4YmJhYmRlNTcxMzgyODVmYTgyMzU0ZTQifQ" + "version": "repo-lines-v1:sha256:f4c9241bfe7b0a135b9c8734ebdeea7b8ce31fb51b7324821c6267d5e7e465e5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5YmZlY2I0ZDc4YjkzYzQyMWUwZWM2ZDMyYmU2MjJhMThjZDJiMmZjNzI4OGZiYjIzOWRhM2M5YTI0Nzc1ZTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM5ZDdlNzU5NWZjZDkxOWExNzk2NjVmNTkxOTIzMGZjMzhhYTFlOWFiNmM2YmNlMDRkNTg3N2YzZGJmZWZhODgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFhMzMzODk4OWMyZjdkMzk2NmJiYWZjN2Q0MWJkYTEzZGFkOGZmYzkxMjM2MjI1MzdjZjFjYzY3NmViM2M0NzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYzODBjMDQzMjQxYjI4NTBiMjAwYjg3N2YwODc1ZDIyNjQ1Y2ZjMDMwYmRiN2E5ODNhYWVjYTc5NjA3OWRkODAifQ" }, { - "resource": "repo://src/generation/repository-run.ts#L15-L60", - "version": "repo-lines-v1:sha256:3b6b16553685af9f26ca877bab1e8f65040fb76b0c749a49f205665e3def8073:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4MjAwOTY0YTk3ODYzNTUyMmIyYWIwOTBjNjUwNjVkOGVmOGU4NWM0NzMwYmIyZWIwNDYwZDM0YzY3N2RkYmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmMjQzOTFmOGQyODJhMTdmMWFiOWE5ZDgxODNjNzc3NjJjOTc4NzA4NmFjNWMwZTZlMWQwYmY3YWExMDQ3MjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAxMzAzNWQ4YTdlYjRiYWJjNDNjMjM4YjJiNjk4MWEzYWFmNTBhYzg4ODNhN2I0YWU0MDI0M2E1MGE2NzRjOGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRmMGQ1MjQyYzUwNjBmMWI0MGJjNGM2NDdlNjJmODdlOTk4MWEzYjkyZGE1M2YzMGE5ZWJiMjU2MWVjODUxOWUifQ" + "resource": "repo://src/generation/repository-run.ts#L15-L70", + "version": "repo-lines-v1:sha256:b31aaa00cdf823f24a01b005ded6367f33e17a9ca81cfb157c11a2e91aa38964:eyJzZWxlY3RlZExpbmVDb3VudCI6NTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4MjAwOTY0YTk3ODYzNTUyMmIyYWIwOTBjNjUwNjVkOGVmOGU4NWM0NzMwYmIyZWIwNDYwZDM0YzY3N2RkYmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYxYmMwMWY3YmY5ODU0MDUwOTljY2E1ODNiNDQ2NWQ1YjM2MWVkNmNhMzI0NWZkMDAzZDgzZTMzYjI5NjkxZDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAxMzAzNWQ4YTdlYjRiYWJjNDNjMjM4YjJiNjk4MWEzYWFmNTBhYzg4ODNhN2I0YWU0MDI0M2E1MGE2NzRjOGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIyY2ZkMzkzMWEwNGRiNTA5NzIxMmQxNGVmNWEwYWE5MmJiNjk4MTc1Y2JkZGE1YWI5YmJjYzhhZDc4ZDU0NmUifQ" } ] }, @@ -135,8 +143,8 @@ "version": "repo-lines-v1:sha256:75c2ac1005af3332902e36da9aca0b9075ca57b96156702b1777abc2998ba584:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4MjAwOTY0YTk3ODYzNTUyMmIyYWIwOTBjNjUwNjVkOGVmOGU4NWM0NzMwYmIyZWIwNDYwZDM0YzY3N2RkYmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY3OTI1YzJiMTg0OWJhZTcwNjVjZDM2Y2Y5NzYwZWVjOGMyODY0N2NlMDc3MmU1NTU3NWY3OWU3NDdiY2I2NzIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgyM2E5NjVlMjM4OWYyZDFiZjdlN2YzYTNiYTY1ODVjOTFhMTc4Y2Y4ZTk1NjZmNTg0YTU1Yjc4NTQxMzkzMzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMzY2ZhYzMzZDRmNGU3YmU2ZTE3YTIzYTQ3NWJjZDJmYzQ2MjE0NDdkMjUzMGUwMjQyMDdmN2E5ZDIyMTZkZmEifQ" }, { - "resource": "repo://src/generation/repository-run.ts#L1062-L1073", - "version": "repo-lines-v1:sha256:533eb223377d9f8f4a881daecb5c5ae531f2db5a8e0e4900556df941deb92e61:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI5ZjFlY2ZhY2NkZGFiZGEzMGJkMjAwYzcyMTI4ZmFlMmUyMTVhMmUxNjBmMTNhYjY3MWZjZjJmMDliMGVkNDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjczMDlkZmZkNjA4YjJlNmMyNWQ4ZGE3N2ZkNWQ5ODE5MGY0ZTNjMzFkZGM2MGE1Mjc1ZWQ3NDc5YmM5NDlhYWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY4MjBhNmZhYmM0Y2UwMmMwYTM0YTcyZDdjZDgzMjJmZDEyNGQ3NzJhZTBkMjZlMGNkMjY3Zjg3MTgxMDRiZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE5NTJjNjdkNWY1YTE1ZGE5NDBkYzYyZmI3MTBiZTU3NWE0M2JlNjkxMmE2MGMyODM1MGFmYjA4MDcwMGI1OTIifQ" + "resource": "repo://src/generation/repository-run.ts#L1062-L1085", + "version": "repo-lines-v1:sha256:c738fd37e3ef7be5a5a3e200c803288788920a323dadec1f2a50129283835885:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2MDYzMzE2NzlkOWUzMDU2ZWQwNzE5YmQwMWRhZTk4OWFmYjgzOGEzYzkyNGQzMTQzMDhmMDQ2MzY3M2E3YTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU3NjBjNzAzNGQ0MDZmYTdkZDQ3MTlhNzM5NzE2MzY0OGQ4ZDBlNjJiODg3ZDc1NWY2NjQ4NGQ4MzAyNjgxMzcifQ" } ] }, @@ -242,7 +250,7 @@ }, { "id": "claim_87bbf385e4f348dda06ce47bf03484be", - "statement": "src/integrations/ owns embedding OpenWiki into external hosts: HostSessionManager (session-manager.ts) is a thin single-run MCP adapter over the transport-neutral lifecycle core whose begin, submitPlan, nextPage, submitPage, and finish methods delegate to generation/repository-run.ts and whose tools() method returns exactly the five OpenWiki lifecycle tools (openwiki_begin, openwiki_submit_plan, openwiki_next_page, openwiki_submit_page, openwiki_finish); src/integrations/mcp/server.ts exposes OpenWiki over MCP.", + "statement": "src/integrations/ owns embedding OpenWiki into external hosts: HostSessionManager (session-manager.ts) is a thin single-run MCP adapter over the transport-neutral lifecycle core whose begin, submitPlan, nextPage, submitPage, and finish methods delegate to generation/repository-run.ts and whose tools() method returns exactly the five OpenWiki lifecycle tools (openwiki_begin, openwiki_submit_plan, openwiki_next_page, openwiki_submit_page, openwiki_finish). The tool descriptions are the host-facing contract: openwiki_begin advertises that an unrecognized language returns invalid_input instead of starting a run, openwiki_submit_page states the Claim-reconciliation rules, and openwiki_finish requires every job complete before deterministic deletion/validation/indexing; src/integrations/mcp/server.ts exposes OpenWiki over MCP.", "evidence": [ { "resource": "repo://src/integrations/core/session-manager.ts#L124-L192", @@ -250,7 +258,7 @@ }, { "resource": "repo://src/integrations/core/session-manager.ts#L214-L252", - "version": "repo-lines-v1:sha256:b3e5359255e6e1c37ea9b3201031e31c39dec55a8ee3f8e5813c5fb330623563:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5ZjE3MzRhNjk0ZWVjZDFmMzFiMWNmYTdjYzY4OTZlZjdkOTZmYzY1OTYyMDAwZjUzOTQ3NjBhYzkyMmVmMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI1MGQ3ZmRlNjc4YWEwOTU2MDBlYTE0OTg0Mjc3ZjYyNThhNWEzMjNhYzQ3NDY0ZTcyZmFkZTk2ZGE4NzUzZDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhOTBlZjcyMzRmYWY2MGU1OGI5YjI2MTRiYmY5YTgyYzc3OTI3M2EyOWIxZTdjNmI4ODA1YjA5NjM5NTRkOGQifQ" + "version": "repo-lines-v1:sha256:66e49770619047379f348c5abd627f3f90cc669cc01156e779031e3914c53da2:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5ZjE3MzRhNjk0ZWVjZDFmMzFiMWNmYTdjYzY4OTZlZjdkOTZmYzY1OTYyMDAwZjUzOTQ3NjBhYzkyMmVmMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI1MGQ3ZmRlNjc4YWEwOTU2MDBlYTE0OTg0Mjc3ZjYyNThhNWEzMjNhYzQ3NDY0ZTcyZmFkZTk2ZGE4NzUzZDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhOTBlZjcyMzRmYWY2MGU1OGI5YjI2MTRiYmY5YTgyYzc3OTI3M2EyOWIxZTdjNmI4ODA1YjA5NjM5NTRkOGQifQ" }, { "resource": "repo://src/integrations/core/session-manager.ts#L50-L116", @@ -296,11 +304,15 @@ }, { "id": "claim_ef8b2f85bc1e4b56840d79656b3c624c", - "statement": "src/platform/ owns cross-platform OS and filesystem primitives shared by other subsystems, including isFileNotFoundError, secret-redacting diagnostics, and language resolution.", + "statement": "src/platform/ owns cross-platform OS and filesystem primitives shared by other subsystems, including isFileNotFoundError, secret-redacting diagnostics, and language resolution (resolveLanguage/requireResolvedLanguage) imported by the agent and the generation lifecycle.", "evidence": [ { "resource": "repo://src/agent/index.ts#L22-L31", - "version": "repo-lines-v1:sha256:8ba916fac59bb8af9d7639e3cadcb5f565198090a188153daf227181e4123036:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhZDlmZmE1ZGQ3OWRhMWU1MzE2MGE1ZGY4NDVkZDJkNjM4ZmUwNjY3MTZhZmRjMmFkMWVlNTRiOGIzZGNkZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjNDg1YzVkYzU4NTg0NWRjODJlODBkMjk3YjYwNmFiM2FlZDNhYTljYzg3MDNhMjJmM2M3ZWI2NGY0ODYzYmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlhZDU4YjU0NWVjN2Y5NjFmYjk2ZjcwNTk5Mjg0YjhhOTY3ODAyZThhNzdlNWUwNGVkYmQxNzM2MTllZWQ0OWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk4ZTg3ZDc1ODYxYzMwZjc1MjA3Yjg5Yjk2ODRlMjMwZDJhYmM3NmIyN2JhYjBlNGM1OWM4NzZlYzNmNjI3ZTIifQ" + "version": "repo-lines-v1:sha256:d432aae00f1a7b61b1e88d7213964b2f8b78cda424da663f971f20c37e44c7d4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhZDlmZmE1ZGQ3OWRhMWU1MzE2MGE1ZGY4NDVkZDJkNjM4ZmUwNjY3MTZhZmRjMmFkMWVlNTRiOGIzZGNkZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg4NjI3N2JlYzU5YTBhNDA3MjZjOWY2NzkxZjdlMzExNTIwMzA2MmI5MjZjNWFmMmJlNjZmMDM4ZjQzMjBmZWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlhZDU4YjU0NWVjN2Y5NjFmYjk2ZjcwNTk5Mjg0YjhhOTY3ODAyZThhNzdlNWUwNGVkYmQxNzM2MTllZWQ0OWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk4ZTg3ZDc1ODYxYzMwZjc1MjA3Yjg5Yjk2ODRlMjMwZDJhYmM3NmIyN2JhYjBlNGM1OWM4NzZlYzNmNjI3ZTIifQ" + }, + { + "resource": "repo://src/generation/repository-run.ts#L41-L46", + "version": "repo-lines-v1:sha256:97542de577951b2188fbbad564a12de1255d943d6fc7c766254f31b0b5ad584a:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTgyMDA5NjRhOTc4NjM1NTIyYjJhYjA5MGM2NTA2NWQ4ZWY4ZTg1YzQ3MzBiYjJlYjA0NjBkMzRjNjc3ZGRiYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2FkOWZmYTVkZDc5ZGExZTUzMTYwYTVkZjg0NWRkMmQ2MzhmZTA2NjcxNmFmZGMyYWQxZWU1NGI4YjNkY2RkNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2U4MDE4Yzc5OWY3ZmZkZWRmMmE5Mzk4ZjY3OGYyZDAyNzY3MGI5MzQ1YzlkYjE0MjZiY2RlYmUzODhlZmFjYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTQwMzc4YWU3MWZiY2YzOWJjMDQ1YmQ4YzMxM2RiOTA1OTU2MmE3MmY5YzUyNTc0MTNlM2Y5Y2NmOTNmYTcxMyJ9" }, { "resource": "repo://src/platform/fs-errors.ts", @@ -332,11 +344,11 @@ "evidence": [ { "resource": "repo://src/generation/repository-run.ts#L1164-L1224", - "version": "repo-lines-v1:sha256:33ec6863043bff7ba5c11e567a1d2dc2520a50782d299c30d5bd60915a7bc4d5:eyJzZWxlY3RlZExpbmVDb3VudCI6NjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlkNGE2MjczYzFlMWRlYjY5MGMyNTRmMTI4YmRkMGE1ZDU1NDViODA0N2I0MTEwNWY4ZmI5YmRjZjg1OTRiYjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFkYjNlN2NkMGMzYTYyMzA0NzY2ODE2MWQxMDRlOTlkODYyMDljYTNlNzc1NGEyNWIxMTlhNDkwNzg3ODA0MjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZmYTAwYzgzODQ4Mzc3ODU2NDQ3ZmYwZGM1YTliNjgwZTQ2YWNhNjEwOWY2ZDgyYjllNTE5NDQxOWNjODVkZDIifQ" + "version": "repo-lines-v1:sha256:df5d7ea09b5bc2bb07865bc2455ef8c546b6a09d56efaf36f09613b4ef4068ae:eyJzZWxlY3RlZExpbmVDb3VudCI6NjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkOWUxMjU0NjQyNTU3NmQzZGVhZThjOWI5ZGJmMTI4ZDVkNmRkYWY1ZDdmZTg1NzkzNDkyN2RlZmZhM2I5ZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlYzYwMjJjODRhNTFjYjIzYjg0NWUzNDE5ZmY2MDgyMDNjMzFlZjYwMjU3NzkyN2MwMjUwY2NjZjBlNjg5YjQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc5ODcxMTM5YjFkMWZiY2ZlN2M4Nzg0MmFiMTA0N2IzZjJkY2U4YmFmMTdkNjM2MmE3MmZjZjMyYjc4OWUyMzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFkYjNlN2NkMGMzYTYyMzA0NzY2ODE2MWQxMDRlOTlkODYyMDljYTNlNzc1NGEyNWIxMTlhNDkwNzg3ODA0MjYifQ" }, { - "resource": "repo://src/generation/repository-run.ts#L1458-L1501", - "version": "repo-lines-v1:sha256:87dcbcfdd216a63f7139577f98e971794bdff005a36d6ad0aaa4d36358735f15:eyJzZWxlY3RlZExpbmVDb3VudCI6NDQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRiYzdlYzc4NzgwNDg4MTk4MDc2M2YyOWMzMzNlNmE1MjEyNjMwN2ViYThmNmUwZTI5MjdhNDJkYTI4Y2M4MTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFkYjNlN2NkMGMzYTYyMzA0NzY2ODE2MWQxMDRlOTlkODYyMDljYTNlNzc1NGEyNWIxMTlhNDkwNzg3ODA0MjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg4ZjI0Y2MwNzU3YzQyZTdjNjMyYzFmNzUyNTQ2MGY1NjczMWU5NWUwM2UwMTc4MDk5MTk0N2UyYzNjZmZkMDgifQ" + "resource": "repo://src/generation/repository-run.ts#L1458-L1512", + "version": "repo-lines-v1:sha256:b8b4fb0d46c6e427a2d5fc6c368c3793aafbf0d48191736e5312e31543b42124:eyJzZWxlY3RlZExpbmVDb3VudCI6NTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5ODE3NDUyZGZhYzExZTAwNDlhMjM4ZmJjMmQ5YWI3N2JhODYyNjk1ODNiMmUxNTM3NDkzMDE4YzZlNjdlYTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAzNDRmZDM5Y2M3ODkxNzJjNTgxM2UxMmE1ZDcwYzMwMmUyYTIzMTE0OTczOWJjYmVkMjFmM2QxNWNiMzkyMWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg4ZjI0Y2MwNzU3YzQyZTdjNjMyYzFmNzUyNTQ2MGY1NjczMWU5NWUwM2UwMTc4MDk5MTk0N2UyYzNjZmZkMDgifQ" } ] }, @@ -360,25 +372,33 @@ }, { "id": "claim_d1c94551ab374c5282a1e3a09c3b058e", - "statement": "src/agent/utils.ts provides the shared run-context and metadata primitives consumed by the repository generation lifecycle: createRunContext builds the run context, createOpenWikiContentSnapshot/createRepositorySourceSnapshot capture pre-run baselines, and writeLastUpdateMetadata/persistRunMetadataIfChanged persist .last-update.json (called by submitRepositoryPage's skip path and finishRepositoryRun's completion/interrupted paths).", + "statement": "src/agent/utils.ts provides the shared run-context and metadata primitives consumed by the repository generation lifecycle: createRunContext builds the run context (rejecting an unrecognized language via requireResolvedLanguage and materializing English as 'en'), createOpenWikiContentSnapshot/createRepositorySourceSnapshot capture pre-run baselines, and writeLastUpdateMetadata/persistRunMetadataIfChanged persist .last-update.json (called by submitRepositoryPage's skip path and finishRepositoryRun's completion/interrupted paths).", "evidence": [ { "resource": "repo://src/agent/utils.ts#L1-L48", - "version": "repo-lines-v1:sha256:13c94fdb0ce8bd7e01648fae0ea79e74be9dc1303f282edcb22ae7b7964621b0:eyJzZWxlY3RlZExpbmVDb3VudCI6NDgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4MWM4MDY1NjhlNWMxYmZhMGU2YzM1MGVmMzYwYjg0YWEzMTk5MGY5MDhhNWY2Njk5OTBlYTc4NjlmOWQ2ZGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRmYzg5ZmFhN2VmNDkzNjgxNmMwMjkxYmEwYzA0YTRlYzFkODlmNjY1ZTA2ZDZjMGQwNjcwMDRjYzFiMmI1NjcifQ" + "version": "repo-lines-v1:sha256:eb4075da21ef57861b5867f0cdcadf9b1eeca7d59b64af010992dd8fb19b53d8:eyJzZWxlY3RlZExpbmVDb3VudCI6NDgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4MWM4MDY1NjhlNWMxYmZhMGU2YzM1MGVmMzYwYjg0YWEzMTk5MGY5MDhhNWY2Njk5OTBlYTc4NjlmOWQ2ZGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRmYzg5ZmFhN2VmNDkzNjgxNmMwMjkxYmEwYzA0YTRlYzFkODlmNjY1ZTA2ZDZjMGQwNjcwMDRjYzFiMmI1NjcifQ" + }, + { + "resource": "repo://src/agent/utils.ts#L208-L277", + "version": "repo-lines-v1:sha256:e70404d1c46c87ce73e112bb52ff6d3974256e1911c9a6f2ea4d5b19cdd44b99:eyJzZWxlY3RlZExpbmVDb3VudCI6NzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzY2I3OGRkNzgwNWM1OGRiNTY1MDU2ZGI4NWY4YTFiNTRlYjA0YzdhYjAzZTUxYjljOTkzMWY0ZDIxZDAwNmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5NWMyZWMzNWFjOTkxMGI1MjAwMmQ4ZTNiYmQ4MTdlOWZiOWY2ZGNmZjRjNjIzNTk5MTZiMjhhMDJhZDU4MWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJhMWNiNDNlZjFhMmI2OTM2NDY0NjkzODY4YWZiNzVlMzJkNjI3YzY2YzNkOTJhMWNmYTA0OWI0YTIwM2FkZGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAyNDI0NDY5NDU4YTk1YjE5NGNmMDI3NWEwZjU5ODMwNDRlNWVhYTYwMmNhZGJhNmEwYTZjNDkzMTk2ZTk5NDAifQ" + }, + { + "resource": "repo://src/agent/utils.ts#L74-L97", + "version": "repo-lines-v1:sha256:2d1e415e30fa04527dc1a318d3a6caf46f6411eb6ded8113a516c61a25cfc3ab:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJiNTZjMjNmMTViZGEwMjQyNTAzYzNkOThlNTJmZmY5MWMzZDEwNjg5NzhmNjY2YTBiZDZiZGEzMDU0OTg4YzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM2OTI1M2M4MmM3MDVmODljMjVmM2EwZmQ1MjUzOWRiNmViNDBlM2YzNDkxNjk1ZDRiMTRmM2FhMzdmMGUwZGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNkZmI1MzljNmI1NTI2NGMwNmY0MzhjMTU1NGNmZDE3MzgxZWYzNGNlOTE0OTkyNDhkMDBmOWNiMzJjMWNjOTMifQ" }, { - "resource": "repo://src/generation/repository-run.ts#L1075-L1083", - "version": "repo-lines-v1:sha256:e3829ac4e15e509812a1d561f92bf92dad5dbe2f2ae7e2ac89a57a977a87065f:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDEyZjg4YzM4ZjU0YjkzYmVlMmQ2YzZhZTMwZjRiYTI0Mzg4MGI4N2Q0NTBlNTU0NzlmNTAwNzVhNzIxZjk2NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTVlZjAxYmMwOGRiYzNiNjNlNGU3NWVhM2QyNmE1Yjk0MTg5MTg3N2UyN2FkODkxMzI5Yzg0MTFkN2Q4ZGM0ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWUzYmM2OGMxMjIzMGI0NDdjYmE5ZjJlNDYyMmZjNzJmNjNmZGRlYmNkNGY3ZjMyZGYzNTZiOGM4YWFjYTI3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODM5ZWNjMGY0NjRmOTgzNmZmOGRhOTQ2YmZlMWNlOWI5YzZiN2NmNmRlMmNjOWVhNzYxNTA2MmI4NDViNTFjMyJ9" + "resource": "repo://src/generation/repository-run.ts#L1062-L1085", + "version": "repo-lines-v1:sha256:c738fd37e3ef7be5a5a3e200c803288788920a323dadec1f2a50129283835885:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2MDYzMzE2NzlkOWUzMDU2ZWQwNzE5YmQwMWRhZTk4OWFmYjgzOGEzYzkyNGQzMTQzMDhmMDQ2MzY3M2E3YTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU3NjBjNzAzNGQ0MDZmYTdkZDQ3MTlhNzM5NzE2MzY0OGQ4ZDBlNjJiODg3ZDc1NWY2NjQ4NGQ4MzAyNjgxMzcifQ" }, { - "resource": "repo://src/generation/repository-run.ts#L6-L14", - "version": "repo-lines-v1:sha256:27cde43eecb9c1b318432116bcff58635f3aca15715706fb187a86e1d115db09:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTgyMDA5NjRhOTc4NjM1NTIyYjJhYjA5MGM2NTA2NWQ4ZWY4ZTg1YzQ3MzBiYjJlYjA0NjBkMzRjNjc3ZGRiYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQ4YmNiMWY1N2U5NzUxMTY1NDBjYzgwMDUwZGU4ZTg5MmMyNTU2YWQyMWJiNGQ5N2Y2MTI2ZTg1MWI1NTc1NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmYxZGIzZThmOGFlYjI2NjU3ODhiYmJhYmI0ZmUxMGRiMzFkNTY0YjdkNTQ4NmFlZTBkZjNjNmY2ODFjOTE4OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOThkOTc1OTA1ZGZlZTQ4YTM4ZDVjZDUxNTBjMDkxN2ZmYzk1ODVlMDE0NWJhMmM2NTc4NzM0MTQ4YjRhM2E5MSJ9" + "resource": "repo://src/generation/repository-run.ts#L1525-L1536", + "version": "repo-lines-v1:sha256:4da6c9b494b302d3ceee11dde6d8190eb61f47c6f29bc17011b7c4e441ec76b2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY4YjQ2MWRlZTY0NjQyNmVhZjFlNzNmMjdmYzQ2MTk2NTRiNmMyZTAxMWU5Yzg2OWUwN2QzODBiODZiYzgyODEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhMjQxNjVkOGU1ZDlmM2Y0ZTg5ZjZlNjlhNmE1ZTgyM2U1MWY4MzJlNmIwMjQ5OTZhODEzMjNkMzNhOTI2ODciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRhYjUzYWFiODZkOTZhMWYyZTdkNTA2NjFlMGJmOTU0M2Q0NWNhMGMwZGIyMDM1YTc1MjFjZWFiNjg1MmM3NWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyMTU1YTY2YjM5MWRhMGYwODc3ODU3YWNhMDJmOGVkOGYxNjA1YzM4MDBkMGFlOGM5MWI2ZGY4NjkzMzI2ODMifQ" } ] } ], "verification": { "by": "openwiki/0.4.3", - "at": "2026-08-28T03:39:43.412Z" + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/concepts/model-providers.json b/openwiki/.claims/concepts/model-providers.json index f27f74bf2..ac396b01f 100644 --- a/openwiki/.claims/concepts/model-providers.json +++ b/openwiki/.claims/concepts/model-providers.json @@ -1,36 +1,36 @@ { "schemaVersion": 1, - "pageVersion": "sha256:7184f4f9896e5ddd001bafc00558e5bfac684857918eadf98910366e7dad98cb", + "pageVersion": "sha256:ed6d0b8a894cc3ea6bb669111aa239ffed65db4882a16d0943b85e3e29b2b26e", "claims": [ { "id": "claim_881dbd60dd434311a4774d72dabe29af", "statement": "PROVIDER_CONFIGS in src/config/constants.ts is the declarative registry that is the single source of truth for each model provider's label, model options, environment keys, base URL, and authentication method, accessed through helpers such as getProviderConfig, getProviderApiKeyEnvKey, getProviderAuthMethod, and resolveProviderBaseUrl.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L168-L231", + "resource": "repo://src/config/constants.ts#L172-L235", "version": "repo-lines-v1:sha256:94dfa82866a3782f2bd51e8d1674ec7c3e95d8a41505571eba5c2273f6c181a3:eyJzZWxlY3RlZExpbmVDb3VudCI6NjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2ZjU4ZGJiODVkZGNlNTcxMTVhMjg4ODgxMWY1ZjRhMDBkODg4OTNmYzJkMjdhZmJkYTJmOGFjZjRkNDFjYjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhMWQxYTYzMzkwMjI5Yzc5ODM0N2U4M2EwNDA1NDQxYzk0MDAwMzUyODRhZDE2OGMxYmY2Y2RmMWQ3MGEzNzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE0ZGVlM2JmMThhY2VkYzM2Mzk5MGIzMDIxNzNjZTY5NzZhMDQ3YjVkZjMyZDdlMjhiZTA4ZTgxZjdlZmEzNGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRjM2RmNTJkZDkyYzZhYThiZTI2NjQ4NWZjYzhhMDdlMjQ0NGZjMDNlMDJjMTZiMWMxZmFmNTM0OTllNWZmZmQifQ" }, { - "resource": "repo://src/config/constants.ts#L249-L406", + "resource": "repo://src/config/constants.ts#L253-L410", "version": "repo-lines-v1:sha256:d45be38d477e5840338be358374a37a7dbd6ea91568b671a8f1a06a962eab9ea:eyJzZWxlY3RlZExpbmVDb3VudCI6MTU4LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIzYmZhZjljZDhmZjJhZjAzOTdmMTBiODM5ZGJkODc1YWQ0NDgzMDJkNTQxOGMzOGE1ZjVlN2EyOWQ4YmM4NGMzIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJhYTFkMWE2MzM5MDIyOWM3OTgzNDdlODNhMDQwNTQ0MWM5NDAwMDM1Mjg0YWQxNjhjMWJmNmNkZjFkNzBhMzcwIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiJjNjBjYTRiNDcyNjUyZTMyMDNmZjcyMzY4NGQyZTAyNzY0ZTJkZTgyYWQ0YmZiNGU4YjZlYTI2ZjgyMDYwMjZjIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIyYWMwMGQwNzFlZDEzODRhOTIyNjg0M2Y2NGZkNjNkMTgwZWJmMTU2MDIzMzdkY2ZiNGIxOTcwNDA4NWM3ZTUzIn0" }, { - "resource": "repo://src/config/constants.ts#L415-L497", - "version": "repo-lines-v1:sha256:096b88ca6d4bf1c61d2a9efca15dfeb771d767bcccdb6654bc3c8b3e1e502a22:eyJzZWxlY3RlZExpbmVDb3VudCI6ODMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk3YzU3ZTQyMDRhYWY0YTMzYzY0ZGE5OWU1MTBiOGJlYzQ1YjViYjYyMDQxM2I5ZTg4OTA4NGJiOGY5NjM0NWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI1MjBmODY4YjNiYjAwYzE3ZDJjYTc3M2VlYjJiNzY4NmIwMzZhZGY1YTFhODMyNjRhNDQ3ZTdlMGIzY2I1MzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdjNTIwMzUzZWRlMGZlMTkwM2Y2Zjk2ZDA3MWQ3Yjc1ODhhZjQ1ODU4MjAxM2EyNGJjYjYwYzQxNjk3NTkxNWYifQ" + "resource": "repo://src/config/constants.ts#L419-L500", + "version": "repo-lines-v1:sha256:662bbd7e011c00b7d2298dc4b6c315a56410d58cfa7eea6cf6765e44de569bc1:eyJzZWxlY3RlZExpbmVDb3VudCI6ODIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk3YzU3ZTQyMDRhYWY0YTMzYzY0ZGE5OWU1MTBiOGJlYzQ1YjViYjYyMDQxM2I5ZTg4OTA4NGJiOGY5NjM0NWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI1MjBmODY4YjNiYjAwYzE3ZDJjYTc3M2VlYjJiNzY4NmIwMzZhZGY1YTFhODMyNjRhNDQ3ZTdlMGIzY2I1MzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk3NmJlMDI2OGQzZGEzMWQ3NjQ1ZmY4ZWU5NjJjNGIzZDhkYzBkMDMwZTA5NDM1MGExZDIwNDk5YmUzZGY3N2EifQ" } ] }, { "id": "claim_e156af3a42264d3289fc7adc2fbe1d60", - "statement": "The active provider is resolved by resolveConfiguredProvider, which prefers the OPENWIKI_PROVIDER value (normalized case-insensitively) and otherwise infers a provider from whichever recognized API-key env variable is present, falling back to DEFAULT_PROVIDER (\"openai\").", + "statement": "The active provider is resolved by resolveConfiguredProvider, which prefers the OPENWIKI_PROVIDER value (normalized case-insensitively) and otherwise infers a provider from whichever recognized API-key env variable is present, falling back to DEFAULT_PROVIDER (openai).", "evidence": [ { - "resource": "repo://src/config/constants.ts#L803-L851", - "version": "repo-lines-v1:sha256:af495d906269679892996703f66c525f29aaf7d30f52efa2e8f8939d95e0c5da:eyJzZWxlY3RlZExpbmVDb3VudCI6NDksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3YmMwZmNkMmRlM2NmMzA1ZTkzMTFlYjk3OGJkMWVhMDFmYWU4NWIzYTVhOWI0NDdjYzA0ZGRlYTI0ZjhkY2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg1OGIzYTUzMmM2YjVhNDZlMzEwOThkNmQ0MWIzNGJjYzg3OTE5MjNkMzBjMDA4YmVmNzczMjU5Y2MyOTI3MTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhODcxNjg3YTI4YTlkYTdkNzUxYzdiYjE4ZWRkZjExNGY1MGM5Y2E4ZmMxZDM3YWIzYjc3ZGQwYTk5MDdkYWUifQ" + "resource": "repo://src/config/constants.ts#L103-L103", + "version": "repo-lines-v1:sha256:6e24dd433647f55f39004d4399349b92c931bc08c09d355bc02b73d7bb92aa47:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUyNGRkNDMzNjQ3ZjU1ZjM5MDA0ZDQzOTkzNDliOTJjOTMxYmMwOGMwOWQzNTViYzAyYjczZDdiYjkyYWE0NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUyNGRkNDMzNjQ3ZjU1ZjM5MDA0ZDQzOTkzNDliOTJjOTMxYmMwOGMwOWQzNTViYzAyYjczZDdiYjkyYWE0NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2ViNGQ4ZTg3OTU1YWE4MzM0MWFhZmZiZTYyNjQ3OTRkY2M5NTI0MzNhODNmNzE2N2ZhNWQ5ZTJmMzUxNzZjYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTc3M2M0N2Q1N2RkZjNiMDNlOTZjNDVkODdkYmIzZmEzOTI4ZGFkNTgwMzg1MWQ3MWJiMTRlZTFkZjFiNmM0YiJ9" }, { - "resource": "repo://src/config/constants.ts#L99-L99", - "version": "repo-lines-v1:sha256:6e24dd433647f55f39004d4399349b92c931bc08c09d355bc02b73d7bb92aa47:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUyNGRkNDMzNjQ3ZjU1ZjM5MDA0ZDQzOTkzNDliOTJjOTMxYmMwOGMwOWQzNTViYzAyYjczZDdiYjkyYWE0NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUyNGRkNDMzNjQ3ZjU1ZjM5MDA0ZDQzOTkzNDliOTJjOTMxYmMwOGMwOWQzNTViYzAyYjczZDdiYjkyYWE0NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2ViNGQ4ZTg3OTU1YWE4MzM0MWFhZmZiZTYyNjQ3OTRkY2M5NTI0MzNhODNmNzE2N2ZhNWQ5ZTJmMzUxNzZjYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTc3M2M0N2Q1N2RkZjNiMDNlOTZjNDVkODdkYmIzZmEzOTI4ZGFkNTgwMzg1MWQ3MWJiMTRlZTFkZjFiNmM0YiJ9" + "resource": "repo://src/config/constants.ts#L834-L866", + "version": "repo-lines-v1:sha256:ca82aaa4beb3360ddd9733313caf40608f675311ba0e811d6db7cac2cc9b51df:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4YTAxMWI2NWI1YTk2MzBmZTU5YmU0MDU0MjM0ZmFiZmM5MTA4NTBmMWNmNWRmOWJlNTJlNGE4NzViN2JkZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY4MTJjMzg1NDEwYWMyMDA0Mzc4MDZhNDY5YjMzZGI5MTUzZDEyNDc2NGZkN2ZjYzU0YWMwZjQ0YWRkZTQ0NGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhODcxNjg3YTI4YTlkYTdkNzUxYzdiYjE4ZWRkZjExNGY1MGM5Y2E4ZmMxZDM3YWIzYjc3ZGQwYTk5MDdkYWUifQ" } ] }, @@ -39,11 +39,11 @@ "statement": "Each provider declares one of four ProviderAuthMethod values (api-key, oauth, aws-sdk, external-cli); a config that omits authMethod is implicitly api-key, and the method determines required env keys and how the client is built.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L117-L124", + "resource": "repo://src/config/constants.ts#L121-L128", "version": "repo-lines-v1:sha256:e16c14fd3c212ed6b0eb2f3d50faf7bf4b2bb5445dbe81f4347d353434a3c850:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWFmMjJjZjA3MzI1OTJjMjQ3MTQxY2JlNjFlZmExMTAxMjYxMmY1YTMxMjJiOWFmOWJiYWY1MmY1NzI0ZDE5NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjA0OGNhMzRmZTI3NmVjODZlZjkyNTI1NTIwMWMyNzQ2MmIzOTc1YTZkZmMzZWQ0ZTAyZWE1ODMxZWZkNWUyYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTBjMTM0ZGRjNjIxMmQ4ZmJjOGM4NDhmMjM1M2Y4Mzc1NTBlMGQ3Y2UyYjNhOGJlMDA2ZmE2Njk5YzUzYmE3YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjYxNDgwMzNiYjEwZmFkNTVlNDY0NzhhMGI2MzIyNDU4MjRlZTUyYzM3ODA4MDJiMDQxNzU5YWMyM2I1NWJkZiJ9" }, { - "resource": "repo://src/config/constants.ts#L429-L462", + "resource": "repo://src/config/constants.ts#L433-L466", "version": "repo-lines-v1:sha256:46efbd54fd523b40fbf8af9eb1f20a054f13c03b42ab79cdc30818b540494308:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA0MGQwYzVkYzBhNGI4NWM4NTdiZThhYzFmOGE5OGVlYTc5OWIxNWIwMjIwZWQzNDc4MGExODMyZDk1ZjBiNDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNmYjhjYzNjOTYxZGIzNWM1YWE0ZGI4ZjQxNjEzZGQ1MjI1ZWM3OTMyNjk2ZTk5ZTVhMzM1Mjk2OTBjNWNmYTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEzMmE3OGNhOTkzYzZmZjZmODlhODg5NDRhZjFmZWU1MDJiYmQ1NjNjMTVhYmEzYTM5NDEyOTZhYzUxMzRkNjcifQ" } ] @@ -53,15 +53,15 @@ "statement": "Each provider's built-in base URL can be overridden by its baseUrlEnvKey via resolveProviderBaseUrl, and the openai-compatible provider has no default endpoint (requiresBaseUrl) so it requires OPENAI_COMPATIBLE_BASE_URL, whose validation rejects a URL ending in /chat/completions.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L352-L358", + "resource": "repo://src/config/constants.ts#L356-L362", "version": "repo-lines-v1:sha256:5f8e9e0232a719c9a8ab087f86f1486d55d861bbdae0ee3d5657747092130b31:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2U1ZjI3ZGM1NTZkYzMzMTAxMDQ1YzJhMjU0N2JmNTNhOWM3MmRiOTdmZDA4ZmQ2NjY3NGRkMzdiM2M3OTYyOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ1Y2QyZmI0ZjNkZjg4NDUxNTI1NWIzOTUyM2YyZjhiNTQ3MmJlZWE5ZjU2NmZmY2EyMDRkYjgwMjU2MTA0MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmVhNTAyOTdkZjUyNzY4NmYwZjNmMjc2MTc5ZmQ1M2ZhODY2YTJjMTQxZGI4OWY0NzNjNmRkOGMyMjkyNmZjMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmI2MGFlMTY5MzY1ZmI2MGEyZGIyMDU4NGI5MGU0OGU4MjhjMzExMDA5MDk5MjY5NjhmMTQyZmYwMDllMmUzZCJ9" }, { - "resource": "repo://src/config/constants.ts#L621-L644", - "version": "repo-lines-v1:sha256:69608d15f5ff62ab831a7057e4dfd0a1b44ee92719a34ab45607593e13d57393:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkNDg2ZGNlNjIzMTc2NzVmY2NiOWJiMzZjY2Y2OWQwYTU5N2IzYjMyOWI1MWEzM2ZmOTA5OGQ5NGJiZGFjZmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFmYTUzYTZiOTgyOWU3YjFiMjI3NjVmZDMxZmQ2NjEyNGY0ZWNmNmM3ODE3ZmQwODFhNGFlYzBhOTA4ZjcxMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM2YjAwNGE3NThjNDc0ZjcxNGI2NGU1ODA5MjUyY2VlMDJhODllODliY2NmZGM2N2Y2N2I3MmE4YTdkM2Q0MzEifQ" + "resource": "repo://src/config/constants.ts#L636-L648", + "version": "repo-lines-v1:sha256:aa610f8b56748522f8de17a3a69aa6238083d6daaf3f9a4a864d9069b7f647f7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkNDg2ZGNlNjIzMTc2NzVmY2NiOWJiMzZjY2Y2OWQwYTU5N2IzYjMyOWI1MWEzM2ZmOTA5OGQ5NGJiZGFjZmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZjMzI4MjJhNTE5ODZlZDMwNzQwMmJjNzNkNGY3NWE3ODU1MzIyZjAxYWJjY2I4ZGJkOGVlNzczZDc1YTkzZWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFmYTUzYTZiOTgyOWU3YjFiMjI3NjVmZDMxZmQ2NjEyNGY0ZWNmNmM3ODE3ZmQwODFhNGFlYzBhOTA4ZjcxMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI1NGM2Y2NkYzczNDUzYjQzNzUxZjRkNGJlY2Y0ZjMzYjI4OGU0YzJjOWRkYmRiOThiMTUyYjcxZTJmNTNmMTgifQ" }, { - "resource": "repo://src/config/constants.ts#L712-L743", + "resource": "repo://src/config/constants.ts#L727-L758", "version": "repo-lines-v1:sha256:4e212a8b83dd194aeec75adf4abb62b15ffa11d558e5da4f0ad092f650635d66:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlMGQyMmI2YjNjNzEzNGE4ZTQ1ZTUzODY5NTI5Y2FkOWNkZGJjMzNlNzUxNzk0NzIyZWI2NjNlOTAyZTBmNzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiNTgwZTk2NGY4M2E0NzNmNDNkNDQzODQ2Mjk0OWQ2OGI1NjAwZmRhNzg3ZjE2Mzc0NWQwMGRlODljYmYzNmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ1MjdmOTdjNjU1NmZiZDE2MmM2YmQxOGE1OTA3NTlmODVkNDI2ODRhOGY4MjQzOTNkYzFlNWYyODA5YTNmMTIifQ" } ] @@ -117,7 +117,7 @@ "version": "repo-lines-v1:sha256:befe0a1133605d753b67c22e51ebc9e675b45c5c05bf25452b9d230300b20c51:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZlZDVkMzUxMWE5MTE4YWM5MjhlNmE4MzY2MTEwZjczOWFmNTU5ZDU2Njc4MDMwN2EwOTIyNDg5M2I4NGI4NTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIwYzc2MTA1OTg5NDg4OTEzNWM3MmFiNDZkZGFmM2E1Zjc1YWRmNjE0M2M5ODk5NWQyYjlkNjliMGMzOTg2OGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZmOThjZmE2ODJhYWRlMWNjZDEzNDEwYzMxM2MyN2U2NGJlODljNzc5ZWFiZDkwNjAyODVkZTZiZWUzY2ZhNDcifQ" }, { - "resource": "repo://src/config/constants.ts#L23-L30", + "resource": "repo://src/config/constants.ts#L24-L31", "version": "repo-lines-v1:sha256:5a8716c6d90314b355f18374959697e2f5658a6bfc91f898a0642b9ff5f589bc:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjQyNjk3OWU3YjY0YjNmMzg2MjYzZmY3MmZmMjMxMDYzZTc2MDI5ODQxNjRmZjI5OTg4ZjA1ZDA4YmUwYmIwOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODI4NDRiZmYwM2FhZGZjMDRmMDJiNzE3YTAwNzFlZTg1NmUyY2I4ZjQ2NTNiMGE3NjFmMzVjYWUyYWQ0MzU1OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWZhNGM1NjAzZWE2MzQ0NTM5MTMyY2QwN2EyYzIwYTkyNzc4ZDRiNDhhZTFjOThmZmY0N2U2M2IxNDlhMzNiMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzFiMGEyNTU5NjgzZDc1MzBiZWVmYTE0OGYzNDY4ZTU1NzAxMTI5YzEwMzRhY2VhYjM1MWVkMjhjNzc3NzFlOSJ9" } ] @@ -127,8 +127,8 @@ "statement": "OpenWiki has no background ChatGPT token refresh loop; ensureFreshChatGptTokens runs once at run startup before the model is built, refreshing and persisting rotated tokens when the persisted token is expired or within the 60-second near-expiry threshold, and failing with a re-login message when no usable token set exists.", "evidence": [ { - "resource": "repo://src/agent/index.ts#L1250-L1274", - "version": "repo-lines-v1:sha256:b5411929e5fb9f4918bcd70da576618de797baf38e0b454bb128cc60cd412955:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRlYmZhMzEzNGM2N2IyZGY4MWZjMmZhOGVhOWQ1M2I4ZTUyNTA1ZjU0YzYyMDEwYmJlNjI3ZDZiNTkwYWNhNDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJkMGYyZDNhM2FhZGEyNzU4NjQ1NzhkMGE0MzkxNTYzOGQ1NDNmZWNhMmM5NDg1OGRiOTQxMjExZTg2Y2VmMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRmYzhhZWUxOWFlM2E0Y2UxNjdkYmU5NWFiMmE1M2NmMGIxN2JmNjk1MWU1ZWY5ZTRmYTE3NWQ1NjEyY2RhYzEifQ" + "resource": "repo://src/agent/index.ts#L1253-L1274", + "version": "repo-lines-v1:sha256:b46d04454af811e7fc5c1d4390f3f1449584b1bebaf325a3c0852d7828a8733f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU5MzFhMjhmMTI2M2FjY2ZkZDI5ZTg2ZWUyMDlhZjU4NGRjZGY2MDhkNjhmZDVlNWRlMDk5MTdkMDY5OThkNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRmYzhhZWUxOWFlM2E0Y2UxNjdkYmU5NWFiMmE1M2NmMGIxN2JmNjk1MWU1ZWY5ZTRmYTE3NWQ1NjEyY2RhYzEifQ" }, { "resource": "repo://src/agent/index.ts#L321-L325", @@ -160,18 +160,18 @@ }, { "id": "claim_7d1756b0508240ed951711bc48067c97", - "statement": "The gemini-enterprise provider is keyless: it authenticates through Google Application Default Credentials against GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION (defaulting to \"global\"), so getMissingProviderEnvKey treats a missing project as the blocking requirement and getProviderCredentialHint points to gcloud application-default login or GOOGLE_APPLICATION_CREDENTIALS.", + "statement": "The gemini-enterprise provider is keyless: it authenticates through Google Application Default Credentials against GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION (defaulting to global), so getMissingProviderEnvKey treats a missing project as the blocking requirement and getProviderCredentialHint points to gcloud application-default login or GOOGLE_APPLICATION_CREDENTIALS.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L374-L391", + "resource": "repo://src/config/constants.ts#L378-L395", "version": "repo-lines-v1:sha256:e7d915cbcee1e6b4bde1409392135a4c53a503bda6228a4280a4e7897bf003b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyOTkxODZkMDYyMmZhYmVjMDZjOTZmMTkyMDI5ZTBkNDM1NTU5NGQ5N2I2ZjIzY2VkZjQ1ZmE1ZTdlOTZhOTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkNWNkMmZiNGYzZGY4ODQ1MTUyNTViMzk1MjNmMmY4YjU0NzJiZWVhOWY1NjZmZmNhMjA0ZGI4MDI1NjEwNDEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQxMjFkZDRiMTUwOWQ4ZmQ1MjAyZTQzMDQ2MTU5MTg1OGFlMTM1ZjJiOTg0NGE0NzYxZDI2YTA4MTcxZGU0NzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJjZTQ0ZWFkMzIzODBhYzZjMDc3ZDJlMDVlYTE5NDc0MzhkN2U3NzdhZjA2MjgxYjhiNTM0N2MxMzMzZDg0ZmQifQ" }, { - "resource": "repo://src/config/constants.ts#L548-L557", - "version": "repo-lines-v1:sha256:e90d9bd907e16c06bedaea033fa50afbc6eb0bb874e6640d5fe0b6c76b05ecb9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwYjJjNDg0YmVlNmYxN2E0Y2MzM2U0MTgyNDc1ZjI1Y2M4NzA1Y2ViZjdkOTgyNTY4NTM3ZDIzNjA3YThhZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJkMDIxNGZlZjM5YmM0ZTM5NmM3OTk3ZjJkOTgxMjA1YTY5NTFjYzI3ZGFhZWYyZWM0NTI0OTJkMTI3MWZmZGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkOTM4M2ExOTU3Y2I1MDIwZmRmNDAxMTVmYjM1NTc1YzQwMDVmYzRkZTYyZGM2MmIzZGIzZWY2N2UyNzhhNmUifQ" + "resource": "repo://src/config/constants.ts#L521-L572", + "version": "repo-lines-v1:sha256:a801c23fd47dd03cffad24a54201c6e866760fa9842fa813d604255759fa3d89:eyJzZWxlY3RlZExpbmVDb3VudCI6NTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZiZWVmY2U3ZmM2NGQ3YmJiMDNjYjNlYjkwNGVhMTc2YzllODQyNDVkNTUwMTZhYTA0MjQ2MjZmMmQ0MDA2ZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhNmFlMGI3NGRmNzUzN2FmNzA3OTBmNzRiN2ZiOGExNmFlZDEzYWU5ODgyMTUzYWZjOGUyNmIxMjMwNzZmMjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkOTM4M2ExOTU3Y2I1MDIwZmRmNDAxMTVmYjM1NTc1YzQwMDVmYzRkZTYyZGM2MmIzZGIzZWY2N2UyNzhhNmUifQ" }, { - "resource": "repo://src/config/constants.ts#L585-L594", + "resource": "repo://src/config/constants.ts#L600-L609", "version": "repo-lines-v1:sha256:ef23bce93668e4c21ac2bf0470a5fdd49106887023c0205120d85540a54ec8a5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIxYTFiMWQ2ZTI5OGIyYWQ2N2FiZDk1ZGRmZDVhMDVlZDc1MDUwOGFkZjQ1NTMyM2IwNzliYTNlMzk3MjNhMzUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNjYWRkMTUyYzY3NDMwOGMyNzk2ODRiNDU5ODk5ZDYxNGY4NDY3ZjdhMmM2ZWViNjA0YmM4N2Y1Zjk3MjFiZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRjZTQ3YzQwZGUyMTk4YWM1ZGM4YjdiZGE4NGY3NmE4ZDIwNzQ4ZmEwYTNiM2YzZDU5ZGYwNjIyYTU0ODcwZTgifQ" } ] @@ -210,19 +210,19 @@ }, { "id": "claim_93bbc7939e9b4a979809d34b4bd84055", - "statement": "The bedrock provider delegates authentication to the AWS SDK credential provider chain (aws-sdk method): getMissingProviderEnvKey gives AWS_BEARER_TOKEN_BEDROCK precedence, validates the legacy and standard AWS key pairs (rejecting a partial pair but allowing an absent one), and Bedrock requires a region resolved from BEDROCK_AWS_REGION with fallbacks to AWS_REGION and AWS_DEFAULT_REGION.", + "statement": "The bedrock provider delegates authentication to the AWS SDK credential provider chain (aws-sdk method): getMissingProviderEnvKey gives AWS_BEARER_TOKEN_BEDROCK precedence, validates the legacy and standard AWS key pairs (rejecting a partial pair but allowing an absent one, and a complete legacy pair short-circuits to null), and Bedrock requires a region resolved from BEDROCK_AWS_REGION with fallbacks to AWS_REGION and AWS_DEFAULT_REGION.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L260-L273", + "resource": "repo://src/config/constants.ts#L264-L277", "version": "repo-lines-v1:sha256:13837d155bddf886c1281a488f705d17909cea7570ac2ea91f1006e18fa04958:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhkMGIyMjJlZDFiMTQ0Zjk2Y2U3ZTllYjM2OWJkNDMyNzE1ZTQ0MTliMGJjOWJmYjJmOGQ4YzkwZDkwMDI5MDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkNWNkMmZiNGYzZGY4ODQ1MTUyNTViMzk1MjNmMmY4YjU0NzJiZWVhOWY1NjZmZmNhMjA0ZGI4MDI1NjEwNDEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk0NmYyNzEwZTg3YzcyNmYwZjBhZmUxZmZlODkwOTYzODQ2ZjM5YzUzZjA5NWE1NTY2ZGFlNzIxYzVmNjdhYTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY5NzdiY2ZmYWFjM2FkZWQ3ZDQ0ZDE3M2YwYWQ1N2EyYjUzNWFlZjQzZTViZjg2ZDIzZDMxYWJiOWIxNzBhMTcifQ" }, { - "resource": "repo://src/config/constants.ts#L506-L557", + "resource": "repo://src/config/constants.ts#L521-L572", "version": "repo-lines-v1:sha256:a801c23fd47dd03cffad24a54201c6e866760fa9842fa813d604255759fa3d89:eyJzZWxlY3RlZExpbmVDb3VudCI6NTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZiZWVmY2U3ZmM2NGQ3YmJiMDNjYjNlYjkwNGVhMTc2YzllODQyNDVkNTUwMTZhYTA0MjQ2MjZmMmQ0MDA2ZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhNmFlMGI3NGRmNzUzN2FmNzA3OTBmNzRiN2ZiOGExNmFlZDEzYWU5ODgyMTUzYWZjOGUyNmIxMjMwNzZmMjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkOTM4M2ExOTU3Y2I1MDIwZmRmNDAxMTVmYjM1NTc1YzQwMDVmYzRkZTYyZGM2MmIzZGIzZWY2N2UyNzhhNmUifQ" }, { - "resource": "repo://src/config/constants.ts#L681-L694", - "version": "repo-lines-v1:sha256:13ee0738686e1db554aebdb1babba669b43cefb54ca98625a1336fe21f12e02d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYwOTBmMTJkMGIwMWQ2ZTI2ZmIxYThiMzUwM2RkZTg5OTA4ZWMyZDJhYmQyOWU3NTg2OTdmYjU4MzhmNWY0OTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNjYzRjOTk0ZWYwMzg1NzQ0OTVmODM1MTJmNzQyOGY1MDgyOTU5MDhmYzVmNmIxOWM2NzExZjZlYTEwZWVmYzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyN2I4Y2UyMzBhNjM1ZWE1MWViN2FlYWQ0Mzk3ZGMyNmRhODdkZmYyZGQ3ZmQ5ODg0YTg5MWU0YzE3YmIzODUifQ" + "resource": "repo://src/config/constants.ts#L692-L709", + "version": "repo-lines-v1:sha256:d046a4f2141c277a4c804142da4e529731636daa33027f04826ae590664a8e2b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzZjVmNjE2MTBjOWNmNTlkNjVkYmY2YjJkZjNmMjg3YzRmOGQ4MGYxY2U2MjZkNTUwODI0ZDY0NDNmODdjOTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyN2I4Y2UyMzBhNjM1ZWE1MWViN2FlYWQ0Mzk3ZGMyNmRhODdkZmYyZGQ3ZmQ5ODg0YTg5MWU0YzE3YmIzODUifQ" } ] }, @@ -239,7 +239,7 @@ "version": "repo-lines-v1:sha256:3fd52017566b4f1ec3a140a73ae5343e303e7e6237617108c8c97be0be98577e:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiZjk3YjZiMTBiYTgzMTQzZDZkMGNhMjJkMWZkMDMyZjI5ZTNiZWVhNjE0ZGU4Mzc3N2E2YzZhMzEwNTQyZTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhhZDNiNzFkZTM2NjQ2MzdlZjcyOTUzMDg1ZTMzOWIwM2U5NmJjNTg5NGE1NGZiYWVjOWRmODBmYzViZjdhNjIifQ" }, { - "resource": "repo://src/config/constants.ts#L274-L296", + "resource": "repo://src/config/constants.ts#L278-L300", "version": "repo-lines-v1:sha256:d344ff3328005f958432e04516d25f10d371ba4fc49ea82d2eadba12b0fb6e99:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQyNTU3ZDc1MzdlY2RkZTYyZGRkMmUyYmNmYTM3NTA2NDRmMThhNTdhMWMxYjRjNWU1N2QyYWIwYzE2YWZhNGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkNWNkMmZiNGYzZGY4ODQ1MTUyNTViMzk1MjNmMmY4YjU0NzJiZWVhOWY1NjZmZmNhMjA0ZGI4MDI1NjEwNDEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzMzgyMTJiY2JkYjgwM2RiNzRlNWE1OTcwNDE1YWJkZWMxYmE2M2JjODQzZjdiN2JmNDY0ZjAyYjI0MjAzMGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg1YWIyMzFlYWQ4MGZhMjRiYmJiMDIxOThlN2ExZDI3NmVlNjk4MmEzYjcxMjBlYTFiZDM3MTNjM2Q1Y2FjYjIifQ" } ] @@ -249,12 +249,12 @@ "statement": "All managed settings and credentials are persisted to ~/.openwiki/.env, and MANAGED_ENV_KEYS in src/config/env.ts is the single ordered source of truth from which the credential diagnostics list and the agent debug key dump are derived so they cannot drift.", "evidence": [ { - "resource": "repo://src/config/env.ts#L172-L194", - "version": "repo-lines-v1:sha256:98cda4e6692570f6652ef52fa1391df0080bc484cb23a4551007e88034bf7971:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMmQyYzBkNmRjNWU3NGQ5MmZhMTRiOTFkYmVhMjY0MDkwYmViMzVmZGI5MTg4ZDliMzQxMTgxZGNlOWY0Y2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3NGI5OWYxYzI3MTk3ZmIyNTRkYTBlMTc5ODZiNTc2Mjc4YzZhODkyNjIwOTg3NjdjMmQ0NzI2ZjU4OTdlNmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBkMjY4NGNkNzFhMDRjMDZkMTRjY2YwMzVmMzVkZDUwNGM3NGNhZjcxMjdlZjFhZjFiNzg2OTI3YmQ1MWM1ZjQifQ" + "resource": "repo://src/config/env.ts#L101-L166", + "version": "repo-lines-v1:sha256:82ff7ba4002932db77abb6532c23cef5c3e3558c0f03ae0b4c969f549543a316:eyJzZWxlY3RlZExpbmVDb3VudCI6NjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxYmM1OGJiMzRjZjAzODZhYjc4NDY2Mzg2ZjQ0NTc0Y2M5MDM0YjJjNzgwNTNhNjlkZGQ0MDI5Yjk0YTRmMWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjZGM3NmQxMmU1MzA0ZDMwNzllZGI1Zjg5MDAwN2VhMDVmMjI2ZTRkOTNiNjk1Njg0NjBjYWZhZjgwMDc0NGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlkOTM3NjAyOTY1OGU1Y2QyYmRiNTI5YzIwOGNlNzU1OTkxMGU5MzMxM2IzOTNlNmY4NGFmMDgzNzU5OGUwYjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyYzUyMWQ4YTk2NTVkNDg5NTg1ZDE1YTlhOGQ0Yjg5NzMzOGU4NDgzNTM0OWI5YjI3ZGFkNDA4YjAzYTYwYzUifQ" }, { - "resource": "repo://src/config/env.ts#L78-L163", - "version": "repo-lines-v1:sha256:dca3114c68bd65edc0452dee4a021a3d25b181e9355e0ac8a8e3b2267a06ba14:eyJzZWxlY3RlZExpbmVDb3VudCI6ODYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4ZGMxNzc2NThmNzgyMDU4NGU3YzI3M2ViNGZmNjAzM2U5ZGE0OWJhMGQyNmFkMDAwNjJjODFkZGEwZWFkNzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjZGM3NmQxMmU1MzA0ZDMwNzllZGI1Zjg5MDAwN2VhMDVmMjI2ZTRkOTNiNjk1Njg0NjBjYWZhZjgwMDc0NGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk4NjJlZGM5ZDI3NDA1NGZmNzUxMTViOThiOGI5ZDhkMjgyNjNlNmI0NWU2NzViMjJmZWVkNmUwM2UyMjFjNjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyYzUyMWQ4YTk2NTVkNDg5NTg1ZDE1YTlhOGQ0Yjg5NzMzOGU4NDgzNTM0OWI5YjI3ZGFkNDA4YjAzYTYwYzUifQ" + "resource": "repo://src/config/env.ts#L175-L197", + "version": "repo-lines-v1:sha256:98cda4e6692570f6652ef52fa1391df0080bc484cb23a4551007e88034bf7971:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMmQyYzBkNmRjNWU3NGQ5MmZhMTRiOTFkYmVhMjY0MDkwYmViMzVmZGI5MTg4ZDliMzQxMTgxZGNlOWY0Y2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3NGI5OWYxYzI3MTk3ZmIyNTRkYTBlMTc5ODZiNTc2Mjc4YzZhODkyNjIwOTg3NjdjMmQ0NzI2ZjU4OTdlNmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBkMjY4NGNkNzFhMDRjMDZkMTRjY2YwMzVmMzVkZDUwNGM3NGNhZjcxMjdlZjFhZjFiNzg2OTI3YmQ1MWM1ZjQifQ" } ] }, @@ -263,8 +263,8 @@ "statement": "loadOpenWikiEnv populates process.env only for keys not already set so a shell export wins over the saved value, and it snapshots saved values at first load so the setup wizard can pre-fill from the saved config rather than a shadowing shell variable.", "evidence": [ { - "resource": "repo://src/config/env.ts#L245-L282", - "version": "repo-lines-v1:sha256:72be8177e1a87f7e7ca5a9d82b31464b99fcfc8f344132a0ec6f21588cfc7e49:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiY2UyMDUwZTdkNmVkMjA5YjI2YjFlYWVhZTU5NThiNmM3MGNmZWZmOGIzNjQ0M2RmZDRmMWExYmI0MGY1NTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEzYjg0NDliYjgwZmQxOTEyODJjNGQzM2NhMDljMjFlYTM1YzgyZDIxYjU2NDczM2RiNzhhYWU4ZTAzODlhZjgifQ" + "resource": "repo://src/config/env.ts#L265-L285", + "version": "repo-lines-v1:sha256:4ce3eee4b2e02fb6ee325498a6d091d09aad3b4d891c4c532d98ef7573c23bac:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZlZmEyMzE4YTllZjlmNjgwNjM2MzI4NTZmYjU2MzE3YWMzOTZjYTZjNDVhOWZmNjE5ZDkzNDE1OWY0NmRiYTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImIxODBlM2I3ODBkNjM0ZjI5ZjIwZTYxMmJmYmMwOTRhOGU3YWFmMWExNDhlNTgwNGM0ZDFlODU0ZmYxMTFjM2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEzYjg0NDliYjgwZmQxOTEyODJjNGQzM2NhMDljMjFlYTM1YzgyZDIxYjU2NDczM2RiNzhhYWU4ZTAzODlhZjgifQ" } ] }, @@ -273,8 +273,8 @@ "statement": "saveOpenWikiEnv serializes writes through a queue, drops empty values (empty string means not set), creates the home directory as 0700, and writes atomically by writing a 0600 temp file and renaming it into place so a crash mid-write cannot truncate the credential file, updating process.env only for keys not already exported in the shell.", "evidence": [ { - "resource": "repo://src/config/env.ts#L298-L360", - "version": "repo-lines-v1:sha256:660d98bae2f80391d69687bc15b6335e2ed7f6fef2fc7e1de9e5f74a92e7d5f8:eyJzZWxlY3RlZExpbmVDb3VudCI6NjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNiNzUxZDljMDg0ZGVkYzJkMGFiNDNmM2QzNWMxMmIwYzY1YjNlN2I3OGJmMzI4YzFmOGYxM2JlMDcxNmY1YWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE0YmFhNWJkNzU4OGFiNjVmNDEwMjk4YmQ3OWFiMDMyMDMwMGFiMzcxYWFlNWRmYzUxMzI4Y2YyOWFhZmQwNTgifQ" + "resource": "repo://src/config/env.ts#L301-L373", + "version": "repo-lines-v1:sha256:10b9670f535c94020e6189c58958bf4ccd1ae424d601af48558aee85e52455ea:eyJzZWxlY3RlZExpbmVDb3VudCI6NzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNiNzUxZDljMDg0ZGVkYzJkMGFiNDNmM2QzNWMxMmIwYzY1YjNlN2I3OGJmMzI4YzFmOGYxM2JlMDcxNmY1YWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg5YzIwMzdkOGExZWQ5OThiMzJkNGJkM2UyNGFjMjk0MDMwMWY0ZjdkNDY0MTkxN2ZjOWQ0MmMwMzE2Y2Y0ODcifQ" } ] }, @@ -283,14 +283,50 @@ "statement": "The setup wizard computes credential env updates purely via buildCredentialEnvUpdates, mapping collected values to the selected provider's env keys, writing the provider key only when it changes, and expanding collected ChatGPT CodexTokens through codexTokensToEnv, before the caller persists them via saveOpenWikiEnv.", "evidence": [ { - "resource": "repo://src/setup/credentials/persistence.ts#L15-L120", - "version": "repo-lines-v1:sha256:81cd93aedb80cf77aca56236629a3e4fbc49c1da2620f222acaea922fa1e7618:eyJzZWxlY3RlZExpbmVDb3VudCI6MTA2LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJlYWYyMmNmMDczMjU5MmMyNDcxNDFjYmU2MWVmYTExMDEyNjEyZjVhMzEyMmI5YWY5YmJhZjUyZjU3MjRkMTk0IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI1NjIzN2YyOGNkYmE2ZGM5MTM2MmUxYThkMTU5ZDY0NWIwNTI4NDVjYmQ5MTIyNTI5YTcwY2IyNWNiZjVlNWNkIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI0MDE3MjhmODJjNzIxMmFmMWIzNmZmMDZmODY3ZGE0MGUxNTllNjVhODAwMDA5OGM1YmExMWJkMzgwZDFlMDcxIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJlMmVkYTQ2YzFlOWRkY2RkNzEyMGI3NGE1ODM2ZmMxNjFhZGQ5NDc0MDE3MWE3MGQ0OGM2Yjk1Y2JiMWEwZjMzIn0" + "resource": "repo://src/setup/credentials/persistence.ts#L15-L130", + "version": "repo-lines-v1:sha256:a395291f2ebeecf96463c06408d6ed586b2397ab97a0dc162fb576aae9e0a716:eyJzZWxlY3RlZExpbmVDb3VudCI6MTE2LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJlYWYyMmNmMDczMjU5MmMyNDcxNDFjYmU2MWVmYTExMDEyNjEyZjVhMzEyMmI5YWY5YmJhZjUyZjU3MjRkMTk0IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI0MTJjYTM0NWNjZjc1YmY5YzA4MDZiY2U2OTViZThkZTgwOGI3OTk4NDI1MWE3YTU0ZDIwMmNmNjEwMWRkNDUxIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI0MDE3MjhmODJjNzIxMmFmMWIzNmZmMDZmODY3ZGE0MGUxNTllNjVhODAwMDA5OGM1YmExMWJkMzgwZDFlMDcxIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MCwiZm9sbG93aW5nQ29udGV4dEhhc2giOiJlM2IwYzQ0Mjk4ZmMxYzE0OWFmYmY0Yzg5OTZmYjkyNDI3YWU0MWU0NjQ5YjkzNGNhNDk1OTkxYjc4NTJiODU1In0" + } + ] + }, + { + "id": "claim_09032df725974701962eedc53d60a210", + "statement": "Bedrock defaults its maxTokens to BEDROCK_DEFAULT_MAX_TOKENS (16000) via resolveBedrockMaxTokens (overridable by OPENWIKI_BEDROCK_MAX_TOKENS, validated as a positive integer) to avoid the 4096-token Converse API default cap, and resolveConfiguredMaxOutputTokens falls back to this Bedrock default when the provider-neutral OPENWIKI_MAX_OUTPUT_TOKENS is unset (after the OpenRouter legacy OPENWIKI_OPENROUTER_MAX_TOKENS and explicit OPENWIKI_MAX_OUTPUT_TOKENS take precedence); createModel passes it through as maxTokens.", + "evidence": [ + { + "resource": "repo://src/agent/index.ts#L1085-L1094", + "version": "repo-lines-v1:sha256:b365f02ea0b48cc6ba5b3536bbe7fc6dadee80e9bf4df70a42ac008dad2b1f58:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjMzY2NGVkZDQwMTkyYzQ0N2U5OGIyZDMzZDI0NWRhOWVjNDU1M2IzOTEzNmMyODJlYzE1OThhZTllOGQzMTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5NWE2ZDk2ZjBlNmQ1NWFiNmI0MGFmOWYxMjIzMzgxZGQwYThlNjc3YmE4OGQ4NDJkNTUyYzljMmI0NTQ0MjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg2MTRiMTI4OTAzMDk4MmUwM2ZmY2RlZmY3YWY0MzI1ZTRhODRjOTEyMDgxZGE1ZDA5OWFmMTU0ZTJiZTQyNmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxMzQ1NTgyZDdiNGRiYzg5ZmY3NzJkMGE4MjY3ZmI4OTZmYjQzN2Q4NjMzNDNlNGRlOWIwM2QzYTM4NzMzNzMifQ" + }, + { + "resource": "repo://src/config/constants.ts#L1110-L1132", + "version": "repo-lines-v1:sha256:9d9501c2cb2541c19d42680f86001e5933c17cdd35752e2fddf092d1e2b3bfb1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyNWI2MzNiNjc2NmEyZmJjNDRmMmU2NDJjZWViOGNjMGUwY2M3YjVkOWVhNDRmZDNkOGI4Yzc3MmRmMDdjN2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUwNzVjNzA0OTdhZTI1YmIxODYzN2Q2YzYwNGJmZGIzZTg0YzM0N2FiZmZlMTU0YWNkNDNmMGMyZGQ5MzViNzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyNzA2OWRkN2IyNmMxOWU1MmNjZjM2ZDg3OTFkZWFhZGIxMTFjNmZkZTgyMWVkNmNhYmYyMTljYjQxZWIzYTgifQ" + }, + { + "resource": "repo://src/config/constants.ts#L1167-L1198", + "version": "repo-lines-v1:sha256:09c26aa550be540a89881dba2576e54e8f07e07071e3458d948eef1ee500b527:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY2OGY0MmNmMjMzODEzZWQwY2NiYjkyNWNhNzBhY2M3NDA0OWM1Mzk4YTRjNzk4ZmJkMDIxMTQxMzhiM2QyNzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQyYTg2YjZhMWRlMWQzMmIxNzNkOWVmMzdlZjRhOGM2ZjZmY2VhZjVkNjY4NjM3MDgxZmUxYzg5NWFhN2FkNDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFjOTg4MGYyYTVmZjQyYjA2MTA5NWIyNmRmYTI1MGRlMDEwYWRkMzY3Y2FjMzFmNjlkZGExYzUwNmY5MGMxM2IifQ" + }, + { + "resource": "repo://src/config/constants.ts#L41-L41", + "version": "repo-lines-v1:sha256:13e92a0601d59918eb7fef5466d1f5d74a206e8f9adca79a12108cacde076942:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNlOTJhMDYwMWQ1OTkxOGViN2ZlZjU0NjZkMWY1ZDc0YTIwNmU4ZjlhZGNhNzlhMTIxMDhjYWNkZTA3Njk0MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNlOTJhMDYwMWQ1OTkxOGViN2ZlZjU0NjZkMWY1ZDc0YTIwNmU4ZjlhZGNhNzlhMTIxMDhjYWNkZTA3Njk0MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTM4OTEzNTA5NmMyNjBjYmEzZDQyMmYwYmY0OWY3NTcwN2MxNGQ2YzBjM2ZhNmU1MTM5OGU2M2NkOWUyYWVlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGE4N2Y0NzFhNGNlODY4NTIzYzU1YzMxZGYxMjE1MjZkY2I1YjFkZDM0OWFiYTEwNTVkNmFjZWI2YzIyNWYwYyJ9" + } + ] + }, + { + "id": "claim_4fbe3d38d4d04c0d9acddf291b73e537", + "statement": "providerUsesStreaming forces the streaming HTTP transport for all Copilot models (returning true for copilot), because the Copilot API rejects or empties non-streaming requests for non-GPT-5 models (Claude, Gemini) served over chat completions, mirroring the openai-chatgpt forced-streaming rationale; createModel applies it as a conditional spread rather than assigning streaming:false, since LangChain turns an explicit false into disableStreaming.", + "evidence": [ + { + "resource": "repo://src/agent/index.ts#L1241-L1247", + "version": "repo-lines-v1:sha256:316f894e744b688bc2a92f40ff298fb53d11556f71d1952e9966327e6986f2f6:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTdjNWNhNDc3NjYyOTVhNDcyY2Q1NjM4MGFjYWVmZjgwMzYxZGM1MGExZjIwMzhjOGNjYWU0YTViZThlZmNkOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2EzZTQ2Zjk0Mjc2YjZmNmY0ZWQxZjAyYWY3OGJlZjZhMmVlMWM0MzlkZDU1ODRiOTczOTQ4MzEzMjE0ZDJiNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjYyZTRmYTVkZGI2MTczYTVlN2U1ZmI2YmZlZDBmYTZkYjk1Mjg4ZGRkMDdiNWY2NTUzMmFjMTFkZDU4NWI3MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWI3ZjlkN2VlYWQwY2E2ZjNmZjk1Y2NkMGE0OWFmYmM0YzUyMDAzYjAwMjkyODY5MWFjMjExMjhiMGFmYzdmMiJ9" + }, + { + "resource": "repo://src/config/constants.ts#L483-L500", + "version": "repo-lines-v1:sha256:b9c730b8d38e76044fc6e2d21124fa629efc4cdbe0129b22bdf39aedd23787b4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI1ZWRjNWI0ZWIwNjk5MmRmZDgzMjY0NzE3ODU2MThmNzhiNmVjMmRjMWEyODcwODIxNzU3YmZiOGE3MzI2NjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk3NmJlMDI2OGQzZGEzMWQ3NjQ1ZmY4ZWU5NjJjNGIzZDhkYzBkMDMwZTA5NDM1MGExZDIwNDk5YmUzZGY3N2EifQ" } ] } ], "verification": { - "by": "openwiki/0.3.3", - "at": "2026-08-25T02:14:25.283Z" + "by": "openwiki/0.4.3", + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/concepts/two-modes.json b/openwiki/.claims/concepts/two-modes.json index 4336f6f63..07dcdd875 100644 --- a/openwiki/.claims/concepts/two-modes.json +++ b/openwiki/.claims/concepts/two-modes.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:1f20b2d0755187863b358f1e9e0b404e29376f56fbad9876d9d66024546b7b61", + "pageVersion": "sha256:ac50027a6278acc67b1c5125ad7327a9885484697131c979b26e9a2298c77c50", "claims": [ { "id": "claim_b7c92dfb63db42c6ab9db3a60115cec9", @@ -18,11 +18,11 @@ "evidence": [ { "resource": "repo://src/cli/commands.ts#L146-L167", - "version": "repo-lines-v1:sha256:8deaa57433ad06c3b3a36d4305f6cf3cddc5b5065071da7eb211a271c20bd648:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyZjA3ZjQ4OTI5NDMxMjkwNWM5Y2MxOTI0Y2RiNmJkZDE3NWNjMTIwMDM2MjhlZGRiYTk5YzNkZWIxYjY4OTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFmNTMxMGFlZDliYzJhODVjYjU1NzE5OWYxZTkwYTI4MTIyYjQ3MDUyYmM1NzU1MzUwMDZhOTNlNDJmZGEwYTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2MDU5MDI0ZDQ1NjRhZTBmZWJhNWQ3MzhlM2I0OTUxNTczMGY1Mjg5OTdhOTM1ZWQ3ZGNmMDBkODQxNWRkYjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQzMTc5YTNhMWU5YjRhMTYwOGY4NGJhNmQ1ZTBkOTIwNzYwNzVkZTNjOTliZDgyZThjZDkyODNjMzY5NzQ2YmQifQ" + "version": "repo-lines-v1:sha256:0c504c01f26f871aa7962462f472ad52cbb9d8e887e7e82c536465fb135e401f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyZjA3ZjQ4OTI5NDMxMjkwNWM5Y2MxOTI0Y2RiNmJkZDE3NWNjMTIwMDM2MjhlZGRiYTk5YzNkZWIxYjY4OTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2MDU5MDI0ZDQ1NjRhZTBmZWJhNWQ3MzhlM2I0OTUxNTczMGY1Mjg5OTdhOTM1ZWQ3ZGNmMDBkODQxNWRkYjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxZjE0MzM3ZmUzMzk0ZTQxMmQ4ZDc1NDI1OTA4ZjMxNGEzMmU3MWQ4NWQ0MGExOGNlNjczOTljNzcxYmUwMmUifQ" }, { - "resource": "repo://src/cli/commands.ts#L984-L998", - "version": "repo-lines-v1:sha256:f404ce6bc018aba019d88a04cdda2eacd72f4f293f2c5ce7d1974652108c450d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5NWZhMGYxMTE3YjVlYTQwNDM0MTQwZGRlMWEzNDBjNzIwZGRiZjMyNjIxMmUxOTE4MzhkNGIxNTZkMzE2YmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQyYTJjYjI1YTEyMmI0NDIyMWE2MjM0ZWM2NjBhN2I1ZmI3ZjliZGU3YjNiOWUyYjNjNTU5YTBkOTZmYWM3MzkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJlZWVmZGQ1MTEzZDk5MDU2ZjFlMTlkZTFiN2Q1YmVkZTZlMGEzMDFmOWU4ZjdiZTRlYWQzZjhmOGRhODY2YzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBiZmIyYjJjNjY0YzNhY2Y2ZDBjNjI4NzhhMGM2Yjg3NGE4ZjVmOTUwNDQxYWViYzI2OGZkNTE5NjBjZGM4YWEifQ" + "resource": "repo://src/cli/commands.ts#L992-L1006", + "version": "repo-lines-v1:sha256:50df06ed8514999562ffdb8ae9cfaf6cbb7dec760cbe4b80bea3bc21bc92060d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5NWZhMGYxMTE3YjVlYTQwNDM0MTQwZGRlMWEzNDBjNzIwZGRiZjMyNjIxMmUxOTE4MzhkNGIxNTZkMzE2YmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQyYTJjYjI1YTEyMmI0NDIyMWE2MjM0ZWM2NjBhN2I1ZmI3ZjliZGU3YjNiOWUyYjNjNTU5YTBkOTZmYWM3MzkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJlZWVmZGQ1MTEzZDk5MDU2ZjFlMTlkZTFiN2Q1YmVkZTZlMGEzMDFmOWU4ZjdiZTRlYWQzZjhmOGRhODY2YzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBiZmIyYjJjNjY0YzNhY2Y2ZDBjNjI4NzhhMGM2Yjg3NGE4ZjVmOTUwNDQxYWViYzI2OGZkNTE5NjBjZGM4YWEifQ" } ] }, @@ -45,8 +45,8 @@ "statement": "Mode selection happens at argument-parse time: a mode word as the first argument selects the mode as a positional, otherwise parsing defaults to code mode with modeSource \"default\".", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L525-L531", - "version": "repo-lines-v1:sha256:625ed7d691b6f368d2005560a5d40f112b720e523b244c5ed5d3caa1a5de7eb4:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDA4ZjIyYWQ5OGVlZjRmYThkMjA0Mzc1ZjJjMzcwNzNkZjliNzA0ZGM2MjM4ZjYxZDk1MjZiMjJjYzlkNGNjZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTc0MGM1YmMwYTQ1MGRmN2E3YTM2Yzg2NTk5MTljMGZiOGFjYzZkYWYzODhiMDdjZjVmNDEzMzM2MThlYzJiYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzc5MjllOTFlMGY5OWMzZTgyNWRlNjliNDM1ZmI2NDg0ZDFiMGExZGYyZjQ2NTYxYWJmMWEyOWYwNDE4OGI4OCJ9" + "resource": "repo://src/cli/commands.ts#L526-L531", + "version": "repo-lines-v1:sha256:767f9bb2c5260daf8d0e0f5c0b70010134e3e2d8d98690375b35325577de06f1:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTA4OTJhMzU0MWQ0Mzc4YzBiYjI1NjBhMTY2MzY5MDExZGQyM2IxOWUzMGI3YWY0ODM4YjE2YzhkMjMzZDRjMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTdkODYzMmU1NGU5Mjk4YWJiOTU4NzI3ZTJkNTE0MDhhYmFmMTM2NjAzNTM3OTEwMTQwYWJmNjViMzBhYjYxMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2NlYmQ3Yzg1OGFkNGI1Y2QxYjQ3NzVkYTBhNjUwMTI4MGNjZjI4ZDlhNDEyMGEzNzlkMDc5MTNhYzNkNDlkYSJ9" } ] }, @@ -55,8 +55,8 @@ "statement": "When an init or update command is requested while the mode is still at its default source, the parser explicitly pins the mode to code, so bare openwiki, openwiki --init, and openwiki --update run in code mode.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L972-L974", - "version": "repo-lines-v1:sha256:8419512428149639cc9fd589d04f36b939166fbe0587d04804d2165a659eb992:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWRiNjg5MzRkMDcxN2FjZTM5ZDA0ODJhNDkyYzhiZTRkYzg4YTFkNGNhOGU5Yzg0MDM4MmJiOWI5YTA1NWM3MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzgwNWQ2Njk4OTFlZWVmZGQ1ODU5MzczMjJjYTJkOThjNTFhMjNjY2U5OGE1YjQ0NTIyMGMwMGVjOGUwMjA2NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjEzMGIyYTk0ZTRmMTc1ZTNmOTA2NWMzMWJiNDllZDY5NzM1Y2RkMzZjNmMwYTY2YjIzMjQyMGIyZmVmMGQzOSJ9" + "resource": "repo://src/cli/commands.ts#L980-L982", + "version": "repo-lines-v1:sha256:8419512428149639cc9fd589d04f36b939166fbe0587d04804d2165a659eb992:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWRiNjg5MzRkMDcxN2FjZTM5ZDA0ODJhNDkyYzhiZTRkYzg4YTFkNGNhOGU5Yzg0MDM4MmJiOWI5YTA1NWM3MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmVlZWZkZDUxMTNkOTkwNTZmMWUxOWRlMWI3ZDViZWRlNmUwYTMwMWY5ZThmN2JlNGVhZDNmOGY4ZGE4NjZjOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjEzMGIyYTk0ZTRmMTc1ZTNmOTA2NWMzMWJiNDllZDY5NzM1Y2RkMzZjNmMwYTY2YjIzMjQyMGIyZmVmMGQzOSJ9" } ] }, @@ -65,27 +65,17 @@ "statement": "A mode word in the first positional slot selects the mode even when flags precede it (e.g. openwiki --print code --update); otherwise the word would be treated as the user message and target the default wiki.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L947-L959", + "resource": "repo://src/cli/commands.ts#L946-L958", "version": "repo-lines-v1:sha256:5e4ec6caea62daa6961e61c2578f9b0aae53406aabf31b32ae050db1ddc517e8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3YjE2YTg1YTJiOTA0YmUzZDhlOTNlNDc5Y2RjMzhhNTUyYTFkNDJjODcxNGViOTVkODZlYTAzNGQ3OGQzNDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRmM2E1MDYzMzBiMGU1NDBiZjM1ZDYwZGM2ZjZlNTNmZDBkNmE0ZjllNGM3NGIyOTI0NGQ0YzMyZmNjMTkxZjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJjZThkY2U5YTYwOGY4OWI2YWE2YzAwOTkxM2JjNzA3OGExMzQ1YjM4ZjY0YWFmZWNmNjllMzRjZTI2YTgwNjkifQ" } ] }, - { - "id": "claim_fd69d3b469e4413d916ee4c098f69974", - "statement": "The --mode flag (and its --mode= form) validates the value and sets the mode with source \"option\", rejecting an unrecognized value with an \"Invalid mode\" error.", - "evidence": [ - { - "resource": "repo://src/cli/commands.ts#L815-L864", - "version": "repo-lines-v1:sha256:c0d1be879c84ffd86237d746dc9f24ccd6db8237b879bf30466c9e655078bd67:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2MjhlYjdjMTIzNzA4ZTBmNzhiNWVhN2MyMDdiYzJjOGU1NmRmOTEzZDRlNjZmYTk5MTYzMDYzM2NmYzliNWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZjdjNmYxYTFjMGNjOWUyZmI0ODYzYmNhMDEyZTMwZmYyNjMwOWY5NTZhM2Q1YzIwMzExMDljOWIxNDJkZTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4NWIwODkyYjVjMTk0NWU5NTliNDEzYmQ2NTkwZjU2ZmM1MzBjMzQ2NDhkMDA4Njg0ZTRlZmRhYTA0YTkwNWYifQ" - } - ] - }, { "id": "claim_f64341e9a688452a8060c0c0c8c1ca4a", "statement": "resolveExplicitMode rejects a second explicit mode that conflicts with an already-explicit one with a \"Conflicting modes\" error, while accepting a repeat of the current mode or an override of a still-default mode.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L1001-L1017", + "resource": "repo://src/cli/commands.ts#L1009-L1025", "version": "repo-lines-v1:sha256:7ca5b465d44d95c0ab4ca887cfc4055538aec19d1fc317585bbc9134c080106f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3NWM5NmMyMmU0Njc4MjdiMTMyNGU0NzIwMmU5YzQ5OTNjNTY3ZDNmMmFkZjM0N2QwYzZkYmRmZmZlNjhkZGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkyMDQwZTA5NWE5NGUyYWRhNzRlNDIxZjM3MTg3NTFhOTFhODEwYmZkNjZmNDhmNGU5MzljN2I3NDgwZWI2NzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjExZDVjNGY4OTM0ZmI5YjM2ODk3MzE2MGM0ODkzNWVhNzFkMTljYmQwYzdiZWZjNDczYzk5ZTg3NzMyZTQzZGEifQ" } ] @@ -143,8 +133,8 @@ "statement": "Host-driven coding-agent runs (Codex, Claude Code, OpenCode) currently support repository code wikis only, not personal brains, and use only repository source and tests as context.", "evidence": [ { - "resource": "repo://README.md#L100-L102", - "version": "repo-lines-v1:sha256:3650625f1a3ea296759963ed5192dab33599d9869368f946fffa4e6c2ec58021:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzI4NGFmMjYzYjg0ZTlkOGRjNzcyYjEzNjU4ODYyNjZlNzBiZGQyYzUwMTBlNDI1NGQyZWEzZjQ1ZDEzZGFlMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWVjM2U3MTA4Y2U2MTgwZjQwMjgwMGY0OGEzYWI1YzJjOGEzYWM0OGZiMWFmYTNmMTNjY2ZjNGJiOGM0ODhiOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTIxNmM2ZTk4Zjk1NzRkMjUxMGRmNThhNDI5MDgzNTMxMjZlZDUzNDMyNjM4ZmVlZjY0ODVkMTdjNzU5YzUxZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmQzYzJhMDQ0NjNmNGFhMzFmNjZjMTM5MTljYmNkNzkzODkwYjA1OTliOWFmNDU4OGI2N2U0OTVlMjVmYjhjNiJ9" + "resource": "repo://README.md#L109-L111", + "version": "repo-lines-v1:sha256:3650625f1a3ea296759963ed5192dab33599d9869368f946fffa4e6c2ec58021:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzI4NGFmMjYzYjg0ZTlkOGRjNzcyYjEzNjU4ODYyNjZlNzBiZGQyYzUwMTBlNDI1NGQyZWEzZjQ1ZDEzZGFlMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWVjM2U3MTA4Y2U2MTgwZjQwMjgwMGY0OGEzYWI1YzJjOGEzYWM0OGZiMWFmYTNmMTNjY2ZjNGJiOGM0ODhiOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTIxNmM2ZTk4Zjk1NzRkMjUxMGRmNThhNDI5MDgzNTMxMjZlZDUzNDMyNjM4ZmVlZjY0ODVkMTdjNzU5YzUxZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWVkYWJiYWM1YTA2YjMzZDFlYTg3NmI0MDZkMjczZDA4NzYwOTQyNDEzNjg3NDlmNzM3NGFiNjYyOTQxMTE0ZSJ9" } ] }, @@ -207,14 +197,24 @@ "statement": "The OPENWIKI_CONFIG_DIR override merely selects a separate state directory; OpenWiki does not move or delete an existing ~/.openwiki directory.", "evidence": [ { - "resource": "repo://README.md#L134-L140", + "resource": "repo://README.md#L147-L153", "version": "repo-lines-v1:sha256:ecf3c524d5f2cadc27fe91dd80d487241533bd003dcf6b5aa6a6b6b7c16c8521:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWYxMTZmYTEzMzQxMDY3NTVjNmFiYjU4OGEwZWJiNjZmN2NhNmNkOTRkMmVjMGM4NmRkZmE5NjVmMzY4Njk4ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjJjNjQ4MDkxMDk0MmFjZWUwMzgxYjQ5MzRhODZlOGIyZWU5MzhmMzAyODExMjk3MTRjNDlkZGE0OTE0MjVkYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTQ3OGI3NmNjNzE3ZmM1MzhjYTMxMGU4YmIxNmIyOTQyOGU3MTExY2ZiMjMzMWZiMzhlYjRhMzc5MmM4ZDQ1ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGViOGExZmUyMjc1MjRkZGMxNTM4NDQ4NDU2MmZkZWJhMTJjNTkxOTM4ZTkzN2YxYTE3MjQ5NzljODU4ZWVhNyJ9" } ] + }, + { + "id": "claim_8f66e27a98b441fbbd049c62fa005fdb", + "statement": "The --mode flag (and its --mode= form) validates the value and sets the mode with source \"option\", rejecting an unrecognized value with an \"Invalid mode\" error.", + "evidence": [ + { + "resource": "repo://src/cli/commands.ts#L814-L863", + "version": "repo-lines-v1:sha256:c0d1be879c84ffd86237d746dc9f24ccd6db8237b879bf30466c9e655078bd67:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2MjhlYjdjMTIzNzA4ZTBmNzhiNWVhN2MyMDdiYzJjOGU1NmRmOTEzZDRlNjZmYTk5MTYzMDYzM2NmYzliNWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZjdjNmYxYTFjMGNjOWUyZmI0ODYzYmNhMDEyZTMwZmYyNjMwOWY5NTZhM2Q1YzIwMzExMDljOWIxNDJkZTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4NWIwODkyYjVjMTk0NWU5NTliNDEzYmQ2NTkwZjU2ZmM1MzBjMzQ2NDhkMDA4Njg0ZTRlZmRhYTA0YTkwNWYifQ" + } + ] } ], "verification": { - "by": "openwiki/0.3.3", - "at": "2026-08-25T02:14:25.283Z" + "by": "openwiki/0.4.3", + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/integrations/coding-agents.json b/openwiki/.claims/integrations/coding-agents.json index b7e320a99..0ff74c4f0 100644 --- a/openwiki/.claims/integrations/coding-agents.json +++ b/openwiki/.claims/integrations/coding-agents.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:c178cda8b1791ede75cabefd9f8e83b50a30c929c8a596d4309fc0b73d15e377", + "pageVersion": "sha256:6c6a17f25635d460cdf1e8f30ed3f3d4ec09d0faf42c310110cb4d88e77eca83", "claims": [ { "id": "claim_244d2a0a18984ed9bfac7bdabf596487", @@ -26,7 +26,7 @@ }, { "resource": "repo://src/integrations/core/session-manager.ts#L214-L252", - "version": "repo-lines-v1:sha256:b3e5359255e6e1c37ea9b3201031e31c39dec55a8ee3f8e5813c5fb330623563:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5ZjE3MzRhNjk0ZWVjZDFmMzFiMWNmYTdjYzY4OTZlZjdkOTZmYzY1OTYyMDAwZjUzOTQ3NjBhYzkyMmVmMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI1MGQ3ZmRlNjc4YWEwOTU2MDBlYTE0OTg0Mjc3ZjYyNThhNWEzMjNhYzQ3NDY0ZTcyZmFkZTk2ZGE4NzUzZDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhOTBlZjcyMzRmYWY2MGU1OGI5YjI2MTRiYmY5YTgyYzc3OTI3M2EyOWIxZTdjNmI4ODA1YjA5NjM5NTRkOGQifQ" + "version": "repo-lines-v1:sha256:66e49770619047379f348c5abd627f3f90cc669cc01156e779031e3914c53da2:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5ZjE3MzRhNjk0ZWVjZDFmMzFiMWNmYTdjYzY4OTZlZjdkOTZmYzY1OTYyMDAwZjUzOTQ3NjBhYzkyMmVmMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI1MGQ3ZmRlNjc4YWEwOTU2MDBlYTE0OTg0Mjc3ZjYyNThhNWEzMjNhYzQ3NDY0ZTcyZmFkZTk2ZGE4NzUzZDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhOTBlZjcyMzRmYWY2MGU1OGI5YjI2MTRiYmY5YTgyYzc3OTI3M2EyOWIxZTdjNmI4ODA1YjA5NjM5NTRkOGQifQ" } ] }, @@ -189,8 +189,8 @@ "statement": "defaultMcpServerCommand produces the published installed invocation `openwiki mcp --host `, which is the command written into managed host config entries.", "evidence": [ { - "resource": "repo://src/integrations/install/registry.ts#L92-L99", - "version": "repo-lines-v1:sha256:1bb85cb2659661e2a67fbc27b29f63083e37ef19089da5fde39b5c9653a775ed:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjllOGYwMGY0NWRlYmUzMmFmMzlmOTg5NTNjMzUyNzI4OWViZDY4NDUyZTgyMzhlYzMyZTAyNzhkMDQwZmNmMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjUxMzcwZGNmNmE5MzlkNmViMmJiNDgzNDg0MmM5M2FjMzkwM2Q5ZWNjYzBlMGM0M2Y3ZDg3ZmVjY2ZiOWZmOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + "resource": "repo://src/integrations/install/registry.ts#L100-L113", + "version": "repo-lines-v1:sha256:bb14bf04ebc97674d8cffbaee3081824fd7fe177bd965e17c94f014e9632926d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcyNjcxOWM0ZmI0OWM0ZDc1ZTU3NmZmYWI4YzllMjA3MThhNzVhNzVmODZhMTdlZWFkOTU1OThkMjU5OTRjMWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" } ] }, @@ -295,10 +295,24 @@ "version": "repo-lines-v1:sha256:fb6c748e75a8f1504c3ff432ef45e0358c96fa2a5bfc2f1dc7320ba732ca5be3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlNjkzOGVjM2Q0OGVkMzNhNzU1OTRhMTNhODlhNzk3NzBhNGUwMGQzYjc5NGJiOTY5N2RmODliNzY2Njk4MWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0MTY0MWNiZDk1ZjJkYjdmN2E5NzliNmM1YjFkZDQwMDFkZWRkNjk3MTBjZDUzNmI5YjYzN2QyMDAxZTA1NmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVhYzY5MTY4Yjg1MmExODUyMmMyODViNDQxODhlNjNhNGEzMDM3YjVkNWIzYjQ3M2EyZWVlYjg3MGFhNTMwZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg3MzViMjM3NDM3YmQ5NGY3Nzk2NzhhYTEyYTIzNTdiMDJhM2ZiNDA3YzFlODA5MmJlMTFlOTU0YTA4MjU5NmUifQ" } ] + }, + { + "id": "claim_dd0cd3f365894bd6a607b25ab1dc1b54", + "statement": "openwiki_begin validates the optional language by calling resolveLanguage on the host-supplied BCP-47 code before touching the repository; an unrecognized value throws RepositoryRunError(invalid_input) with no run state created, so the rejected request leaves nothing to clean up and can be retried with a real code rather than falling back to English and persisting the wrong language in run state.", + "evidence": [ + { + "resource": "repo://src/generation/repository-run.ts#L322-L333", + "version": "repo-lines-v1:sha256:7571dfbf62ad360dc31c2f1821298764dd5d2cba22a765bcd41282c67ba11c3b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjljNzI5NzlkYzQ1NGJhZGQxZjQyNDY3MTQwMzBjNjAzNzFhZjc5MWMxZTY1MDg1OTUwOTQ3MTNmNWUwZjIyMDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA0YTc4YjM5ZGM0ODFlMDI1NWU1ZDEwZGI3NjMyNjBlNWNkMzkzZWQ1MzkzZjYyYWUyM2M1YTA4NWZkZmQ3MjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcxMzk1ODA0NzhkZmE4ZDBlYWYxOTdjNTljZDI5ZWI2MWQxMDE5ZGQ0OTYwNGI4NDI1Yjk5YTdhZjg1ZDM3YTAifQ" + }, + { + "resource": "repo://src/platform/language.ts#L25-L53", + "version": "repo-lines-v1:sha256:633d65cbdb437a58d2d3ba806f22b8b8a3c3123d30adef91159f6e8886d909d1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlODcwMTQzOGYwNDEzYTI0ZTY5YmMwYWI3N2U2NzU2ZGVhNDQ4M2IwN2JlZjU0ZGVjOTVkNTUyZjM4ODU3NDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk0N2ExYjkwYTQ0OWYzMGQ4MGRlMmY3NjJkZDJlOTEyNWUzNDRhMzQwOGFiMmQ5OWQzYjBkNTk0MGZhNjVkMTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE2NzgwZGU1NTA2MDU3MjA1ZGU0M2YxOTc0ZTE5NmFiNWRkZDNiOGJiZjFlZGFkMjg0NWFhYWE2NmM4YzEwZjUifQ" + } + ] } ], "verification": { "by": "openwiki/0.4.3", - "at": "2026-08-28T03:39:43.412Z" + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/operations/cli-reference.json b/openwiki/.claims/operations/cli-reference.json index 33d72a577..377cbc353 100644 --- a/openwiki/.claims/operations/cli-reference.json +++ b/openwiki/.claims/operations/cli-reference.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:9d35ba815d632b4513bbe3eb03baf420d8d147c9930bdec90a72f41f78404512", + "pageVersion": "sha256:0b468d917a18af0309a3ade77520af5ebdf89c8f46668322dde5d3aff242412f", "claims": [ { "id": "claim_e161d3153b544232b9f17aa2f2838616", @@ -11,8 +11,8 @@ "version": "repo-lines-v1:sha256:4888f57d5b9eb35c837750492c04d9c0bd1d8d76bfd654ad929f2c8069826bd5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2MDVhMzQwMGM5Njg0YmI5OWMwYjA2N2JiMjFkZjYwZGM2MWEzM2ZiNDczN2QzZDZhMjQ3OThjMDdkMDE5Y2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdhNWQxNGIwYzIzMjJjZjY3YzBhODM3YzQzMmQyODFhMWFjOGQyNjdkYzFlNDk1ZDg0YTVhNjlkYTMyNjNjM2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMWE0ZTQyZDY5OTBkNThiNmMxZGNmMTUxMWNlNjVhYTMzZDQ5YjQwN2Y4NjRjZDA2NzhjODliYTY1NWM1ODIifQ" }, { - "resource": "repo://src/cli/commands.ts#L169-L181", - "version": "repo-lines-v1:sha256:c4babbca43b4685e22e75debf7666006a0554c800f3771946e20282f29247536:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA1ZmY1YWU1NzIyNWZhMWY0OTE2OWY1Yjc0YmQxZTFhZGRhNGU4YzQ0YjFjOTI5YzdlMzk2ODE4YjcyOTAzZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkyZjBiYjQ5YTNiNGJjYjIwYzBjNWU3ZjJjNjYzNWRjOTE2OTVmYjkwZjU0ZjY5MGIwNGY0YzE3NTM1Mjg3ZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmMTZlOWJlN2M0Y2U5YTNhMzI5NGUzZmJkZWE3NDk1MGU1YTY0MTFjYjEyZjI2NTFmY2EyYmQ4M2Q3NDU0ZGEifQ" + "resource": "repo://src/cli/commands.ts#L168-L181", + "version": "repo-lines-v1:sha256:73746653d6d338c988839ba8a7ca3c03f64014493a7ba167642a89e0a8759b76:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA1ZmY1YWU1NzIyNWZhMWY0OTE2OWY1Yjc0YmQxZTFhZGRhNGU4YzQ0YjFjOTI5YzdlMzk2ODE4YjcyOTAzZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyOGQzZGI5NDYzMDIwOThiMzIxZDQ5NjU1ODJjZjljNzM4NGFjMzdhNmM5NjQzOTQ0OGY5MmVlYWVjMmViMGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkyZjBiYjQ5YTNiNGJjYjIwYzBjNWU3ZjJjNjYzNWRjOTE2OTVmYjkwZjU0ZjY5MGIwNGY0YzE3NTM1Mjg3ZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlZmE2YWNmMGE2NzU0NWU0ZjVmNTFiY2I2MWFjZDY1MDVlZWY1NzBhNDU3Njk0MjM1OTZkODZkYWNhZTdkNzQifQ" } ] }, @@ -25,8 +25,8 @@ "version": "repo-lines-v1:sha256:9941b958d8e234e20d766b616cd79f7b481480ea173693e9c85605c6f6dd2d27:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwZTY3OGNjYTRjYTU4ZjkyNGYwZDcyZWEyMzEzYzY2YmE5MDVmMDY3ZTk4MDE4OGIzMTVkMzIxN2VjMTg4YTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAwYTE3MzU1MGI2ZjEyNTRlYjA5ZmI3Y2U4ZDlhNDhhNmJmMmE5NDYyY2RjOWQ1OWRmZTIwOTA4YTdmYzc3N2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMWE0ZTQyZDY5OTBkNThiNmMxZGNmMTUxMWNlNjVhYTMzZDQ5YjQwN2Y4NjRjZDA2NzhjODliYTY1NWM1ODIifQ" }, { - "resource": "repo://src/cli/cli.tsx#L60-L116", - "version": "repo-lines-v1:sha256:87788b6fa5eec24806208bd37a974bef8150c585e70945a089f59daa062f57f5:eyJzZWxlY3RlZExpbmVDb3VudCI6NTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGM4ODRkYjNiZjQwOTk4ODNmYjZhOTg0ZTgwZmM3OGU0YTcwZjE5MDQ1YzlmMmRkZjFlZjU0N2VkMjY3ZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMjUwZWQ5NDIwZjE2YTYyOTgzNzAxZWVjYmY0YzIwNmY4Y2MzY2ZhMGVjZGQ5NTQyYjY4MTJiYzg2ZDc5YTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + "resource": "repo://src/cli/cli.tsx#L60-L111", + "version": "repo-lines-v1:sha256:b62e777a1db8f4c5c5b85019feb701990e5592aa7b7dfe635d91e670545d9791:eyJzZWxlY3RlZExpbmVDb3VudCI6NTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGM4ODRkYjNiZjQwOTk4ODNmYjZhOTg0ZTgwZmM3OGU0YTcwZjE5MDQ1YzlmMmRkZjFlZjU0N2VkMjY3ZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMjUwZWQ5NDIwZjE2YTYyOTgzNzAxZWVjYmY0YzIwNmY4Y2MzY2ZhMGVjZGQ5NTQyYjY4MTJiYzg2ZDc5YTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" } ] }, @@ -35,8 +35,8 @@ "statement": "runStandardCommand conditionally loads the OpenWiki environment, re-resolves the command through resolveStartupCommand, computes the first-run telemetry notice, and then dispatches on command.kind to auth, ngrok, cron, ingest, visualize, printable error, non-interactive print, or the interactive Ink App.", "evidence": [ { - "resource": "repo://src/cli/cli.tsx#L60-L116", - "version": "repo-lines-v1:sha256:87788b6fa5eec24806208bd37a974bef8150c585e70945a089f59daa062f57f5:eyJzZWxlY3RlZExpbmVDb3VudCI6NTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGM4ODRkYjNiZjQwOTk4ODNmYjZhOTg0ZTgwZmM3OGU0YTcwZjE5MDQ1YzlmMmRkZjFlZjU0N2VkMjY3ZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMjUwZWQ5NDIwZjE2YTYyOTgzNzAxZWVjYmY0YzIwNmY4Y2MzY2ZhMGVjZGQ5NTQyYjY4MTJiYzg2ZDc5YTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + "resource": "repo://src/cli/cli.tsx#L60-L111", + "version": "repo-lines-v1:sha256:b62e777a1db8f4c5c5b85019feb701990e5592aa7b7dfe635d91e670545d9791:eyJzZWxlY3RlZExpbmVDb3VudCI6NTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGM4ODRkYjNiZjQwOTk4ODNmYjZhOTg0ZTgwZmM3OGU0YTcwZjE5MDQ1YzlmMmRkZjFlZjU0N2VkMjY3ZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMjUwZWQ5NDIwZjE2YTYyOTgzNzAxZWVjYmY0YzIwNmY4Y2MzY2ZhMGVjZGQ5NTQyYjY4MTJiYzg2ZDc5YTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" } ] }, @@ -45,12 +45,12 @@ "statement": "parseCommand returns a discriminated CliCommand union (kinds integrations, mcp, auth, ngrok, visualize, ingest, cron, help, run, error); malformed invocations are represented as { kind: 'error', exitCode: 1, message } rather than thrown exceptions.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L107-L165", - "version": "repo-lines-v1:sha256:228e1c0e10690c88e3cba37ffadc0e2bbeffd4ca0f4c21c9e50a22db263c5d89:eyJzZWxlY3RlZExpbmVDb3VudCI6NTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmOTU4MjYzYTk0OTgyNzBjOTI3ZTA4NjllN2ExYmZkMGE4NzNiYmYwNjU2MDg2MjZkNzllMDUwMzI3ZjViZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkOWUxMjU0NjQyNTU3NmQzZGVhZThjOWI5ZGJmMTI4ZDVkNmRkYWY1ZDdmZTg1NzkzNDkyN2RlZmZhM2I5ZGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ4MTMwNjI4MGYxYzY3OGQ4YTE1ZjM0YTA1NjhjZmEyMDQ5NTE4ZGRjMGUxNzU4YzZjYTVhZjdkYmJkNWU1ZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkyZjBiYjQ5YTNiNGJjYjIwYzBjNWU3ZjJjNjYzNWRjOTE2OTVmYjkwZjU0ZjY5MGIwNGY0YzE3NTM1Mjg3ZDgifQ" + "resource": "repo://src/cli/commands.ts#L107-L164", + "version": "repo-lines-v1:sha256:904e3b186fcfa3b42b8382f08b2f0aea9dbac28577ed62536012687b8ce791e7:eyJzZWxlY3RlZExpbmVDb3VudCI6NTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmOTU4MjYzYTk0OTgyNzBjOTI3ZTA4NjllN2ExYmZkMGE4NzNiYmYwNjU2MDg2MjZkNzllMDUwMzI3ZjViZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkOWUxMjU0NjQyNTU3NmQzZGVhZThjOWI5ZGJmMTI4ZDVkNmRkYWY1ZDdmZTg1NzkzNDkyN2RlZmZhM2I5ZGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ4MTMwNjI4MGYxYzY3OGQ4YTE1ZjM0YTA1NjhjZmEyMDQ5NTE4ZGRjMGUxNzU4YzZjYTVhZjdkYmJkNWU1ZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkyZjBiYjQ5YTNiNGJjYjIwYzBjNWU3ZjJjNjYzNWRjOTE2OTVmYjkwZjU0ZjY5MGIwNGY0YzE3NTM1Mjg3ZDgifQ" }, { "resource": "repo://src/cli/commands.ts#L203-L209", - "version": "repo-lines-v1:sha256:9edc9b869111a148fe538332903b6b83467f93f40188e9ce4c062369f6087671:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGI5MmYzZjMwOWFhYzliYzliNDJhZTY5YzIwN2Y5OGZjNTE1MDk3NThhMWEyMWZlNGU2ZTFkNWNmMDMxM2QwYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjZkYzcyZDc4NTk5MDgzODZkYWI3ZGE2ZWE0MmZiMzBjNjMyYjU4OTRhMGRkMDNmNDgzOWM1ZjFiOWRiNDUxNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2RlNTdhOWNlNWY4MWI5M2Y2ZWNkNTJiYTNkMzkyN2FhODE5YjBkNDM4ZWVmZDdkZTc1MzI0YWVjMmE0ZTM1OSJ9" + "version": "repo-lines-v1:sha256:aaff264b6f3a63fcf6515b1ec9aaee83f900298cede2692920575013689bfb42:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzQwZWRiZDRkNzdlNjU3NWQ0NmJhNDNkYzUyNTI1YjBhMTFkNjQ0NjUwYTUxNjk3Yjc1YWMxMzZjNDU0Zjg5YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDMyYzdkZjk1OGFkMTNhYzFkNzQ0YTVmN2U3NTQ1MWE2MmNkMzk0YjBiODI3YmQ5NzU0ZjliNTViNDJiOTk4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTQ2MzJmNDA3YWZiN2Y0MjIzMDFjZjczMjMwMWI3YWU0NzcxN2Q4NGU0ZjU2NGI5NDUxNWE5MjNiYjQwODc1YSJ9" } ] }, @@ -59,11 +59,11 @@ "statement": "Any argv that matches no recognized subcommand is parsed as a run command by parseRunCommand, and a leading --help/-h yields a help command.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L170-L172", - "version": "repo-lines-v1:sha256:0a0ceb1143ab5f7e89dabe2a52d2862b4463ccfb09829f94a90afbbf39f764ae:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2M2YjYzZDY5NWUwMTljM2YwNDA2ODEzMGY4YTY2NjcwOGI3MGE3ZGY4Y2E2ZjFhMzlkZDA0MTRlOGFhNmU4NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODZkY2JhNWQyNTcxNzVhYjJlYjAwNTgwZmVlZGE5ZjY0NjE0NjYxMjA3ZDUxOWYxMjEyMzJjMmRlNzBhN2JhZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzk4ZjMzZGYxOTgzNzYxNjI2OWQ1ODQ0YTEyZWRjMzgxMTYwMDhkZTBiYjZmNmNjYzI2ZDU4OGQzMDJkMjJmMSJ9" + "resource": "repo://src/cli/commands.ts#L169-L172", + "version": "repo-lines-v1:sha256:7861a848240efc2cc65c9842a6f14b295db802a81cf8ae2c98f58a030c84e4dd:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2M2YjYzZDY5NWUwMTljM2YwNDA2ODEzMGY4YTY2NjcwOGI3MGE3ZGY4Y2E2ZjFhMzlkZDA0MTRlOGFhNmU4NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODZkY2JhNWQyNTcxNzVhYjJlYjAwNTgwZmVlZGE5ZjY0NjE0NjYxMjA3ZDUxOWYxMjEyMzJjMmRlNzBhN2JhZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzhmZjk5OWIzZWNlMjUwYjA4OWVjYzQzMjA0NjRhZGI5ZDAyN2ZkYTVjZTczYjBhZmFmODk3NmJmY2E5MmE4ZiJ9" }, { - "resource": "repo://src/cli/commands.ts#L527-L532", + "resource": "repo://src/cli/commands.ts#L526-L531", "version": "repo-lines-v1:sha256:767f9bb2c5260daf8d0e0f5c0b70010134e3e2d8d98690375b35325577de06f1:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTA4OTJhMzU0MWQ0Mzc4YzBiYjI1NjBhMTY2MzY5MDExZGQyM2IxOWUzMGI3YWY0ODM4YjE2YzhkMjMzZDRjMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTdkODYzMmU1NGU5Mjk4YWJiOTU4NzI3ZTJkNTE0MDhhYmFmMTM2NjAzNTM3OTEwMTQwYWJmNjViMzBhYjYxMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2NlYmQ3Yzg1OGFkNGI1Y2QxYjQ3NzVkYTBhNjUwMTI4MGNjZjI4ZDlhNDEyMGEzNzlkMDc5MTNhYzNkNDlkYSJ9" } ] @@ -73,7 +73,7 @@ "statement": "In a run command --init selects the init command and --update selects update (default chat), and specifying both --init and --update together is a parse error.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L784-L797", + "resource": "repo://src/cli/commands.ts#L783-L796", "version": "repo-lines-v1:sha256:8815dbb2059d78d7e2ac8b629210f3a3dfd4d420b0ab4c637614c38c21fea1c5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhNDBjOTA0M2U3MmE3ZmYzYmMwYzYwOTRjMDlhNWVhNWY5NjgxOWQ0MTk1NmZmMGRkOTEyN2EyOTIwYzYyM2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZjdjNmYxYTFjMGNjOWUyZmI0ODYzYmNhMDEyZTMwZmYyNjMwOWY5NTZhM2Q1YzIwMzExMDljOWIxNDJkZTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIyOWE1Y2NkNGE4Y2IyMzdkNzk2MGRlMDJhZjE3ODRkYWM0YmMxMWY4M2I5ZTQyYTJlNmE5OGIzNzE0MWE5ZjYifQ" } ] @@ -83,30 +83,26 @@ "statement": "The -p/--print flag requests non-interactive output and is rejected with an error unless the run has a message, --init, or --update.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L772-L775", + "resource": "repo://src/cli/commands.ts#L771-L774", "version": "repo-lines-v1:sha256:62c05efb564dac80af967cb1c0111992832b17963800697c7949cc0ff1f0dc3c:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWU0NjUxMGM0NTNjYTdlNDQyNTlhMjA5OGM2MjU2YzY0ZDg0YTA2NzEyYjQ4NzkxMDJhODJkZjk0MDdjZjg4MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzdmN2M2ZjFhMWMwY2M5ZTJmYjQ4NjNiY2EwMTJlMzBmZjI2MzA5Zjk1NmEzZDVjMjAzMTEwOWM5YjE0MmRlMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzg1MWU5ZWI3NjY5ZWJlZTUzYmFjNGRmZWQxOGUxODA3MjQ3YjEyNTJhNjZiYjYzZjk5YWUwNzhhYjc1YTg5ZCJ9" }, { - "resource": "repo://src/cli/commands.ts#L976-L982", + "resource": "repo://src/cli/commands.ts#L984-L990", "version": "repo-lines-v1:sha256:9317cd7105fd6939511697e79c462c50c9f445e3b3335af53e6441845495fc45:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDU2YmE0YjAzY2ZkZTQ5NDI2MDdiNmE4NDg0OTA0Yzg4OTIzMTAwMzg2Y2JjYmZjNTEwNDE5ZTg4NDQ4MDk2YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGZhYjg5YTJiOThlNDEyODFiMjg1ZGFhNjY5NWQ3ZTFhMjhlMTUwMTgzM2RlZjI3ZTM2OGQ3ZDUzNDc0ZjcwNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjc5ODAyNjZkMGY3MzRhYzI4ZDQ1YWQ3Yjk2ZGZjOTNlYzRmOGVkOTUyODhhODNlMDRmMzUyNjA3Mjk3NDk5MyJ9" } ] }, { "id": "claim_7a7f862dbcc2499d84ab28c9e49fc996", - "statement": "The --language/-l flag's locale is canonicalized via resolveLanguage, which drops unrecognized values and produces a warning that the entrypoint writes to stderr.", + "statement": "The --language/-l flag's locale is canonicalized via resolveLanguage when valid; an unrecognized BCP-47 value is rejected with a parse error (kind:error, exitCode:1) whose message names the offending value and suggests a BCP-47 code such as ko, zh-CN, or pt-BR, so a typo can never quietly produce an English wiki.", "evidence": [ { - "resource": "repo://src/cli/cli.tsx#L80-L83", - "version": "repo-lines-v1:sha256:14e8f10826c14116e94de34b05fd0f20857ee04df1337da222538e5af36f52c0:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjAxMjYyMTJkODVhM2EyY2IwODVhODRmNjE5ODQyNTc3ZTZiYzQ0MDk1NGVjMGNiMWNjOWY5MDQ5NWIxOTM3ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTI2ZjU3MzU1MDhmNTc5NzI4ZmM4MjU2MzI5ZmRiZjk2MTQ5NDQ2NjI2ZDg5OGUxYjA1NTdkOGVlZTVmYmExYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWQ5YzQ3ZjRiZTJmNmM0OTUzMDNmNTZhYmEzNjc3YjJhOWExM2Q2NzZhMWE1OTQ1OTk2ODk1ZmQ1MDM2NDNmNyJ9" + "resource": "repo://src/cli/commands.ts#L970-L978", + "version": "repo-lines-v1:sha256:ca2f24932b252b52f6e7c2e0c383519dfc4941b7c1f798db46f7123f558263dc:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmZlZGYyMmI0ZWUwNWYxNjkwMGM3MjA2MmQwZDM1NGY1MzA4MmRmZjE5NjY1OGQ4NTE4NzNhYzMwMDNjZmUyZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTVhOWNlNTQ2NWRlZTlkZWE0NDNjZTVjMTBkMzdhMDJjMWRjYzMzZjU2MTQxNDJkMDkzN2U5NDllZDQxOTdkMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjk3MjFmMDdhNzI3MDY0ODJmNjUzMDQ3Zjg3OTNkYmRjOGY5ZmNlZGI2NmI4M2YyYmM5OGQ3YjVmNDc2MGNmZSJ9" }, { - "resource": "repo://src/cli/commands.ts#L799-L813", - "version": "repo-lines-v1:sha256:49209dd2450dfd8f2363dbdf3d4fe941850799c86eaec388c9caff17cca470b9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3YzA3YmJkOWJmMTYzNzBmZDk1MTQwN2NkYzM5OGRmOWNlNTNhZjVjMTI4MGQ5NjQxYzZiZGYwMTZmY2VlZmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZjdjNmYxYTFjMGNjOWUyZmI0ODYzYmNhMDEyZTMwZmYyNjMwOWY5NTZhM2Q1YzIwMzExMDljOWIxNDJkZTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM5NzQyMTBhMjYwNjA4YWYxYmI1ZmI4ZGI2NTUzZTY2Mzk2M2U2ZTgyNzRhNjA0NDliNWI1NTU2OTE3NmY1YTgifQ" - }, - { - "resource": "repo://src/cli/commands.ts#L968-L970", - "version": "repo-lines-v1:sha256:83ee342c1bdb8a342169f9c4b4d5d49216c0b884ae406440e77a345aa6524325:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTdiOTYzYzg1ZGZiYzQ5NmM2ZjBhMWY1NzQyYTkxNzE3ZmEwYzNhOWQ2MDMwYjY5NzY4MzIzNGE4ZmE5OTQ2MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmZlZGYyMmI0ZWUwNWYxNjkwMGM3MjA2MmQwZDM1NGY1MzA4MmRmZjE5NjY1OGQ4NTE4NzNhYzMwMDNjZmUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjE2MTAwODE0NmVmNzNlOTI4Yjg2N2Y0ZmVkY2QzM2JiYmY5M2I3MTZkZTY4YTg4MTZmYWI5OTFlNzAzMGY0MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjk3MjFmMDdhNzI3MDY0ODJmNjUzMDQ3Zjg3OTNkYmRjOGY5ZmNlZGI2NmI4M2YyYmM5OGQ3YjVmNDc2MGNmZSJ9" + "resource": "repo://src/platform/language.ts#L48-L52", + "version": "repo-lines-v1:sha256:8d2c4a07102fc734b77ba1a92a829a55936eab57c46445f84c71e5a9ab2888b3:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDk1ZmEwZjExMTdiNWVhNDA0MzQxNDBkZGUxYTM0MGM3MjBkZGJmMzI2MjEyZTE5MTgzOGQ0YjE1NmQzMTZiYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDJhMmNiMjVhMTIyYjQ0MjIxYTYyMzRlYzY2MGE3YjVmYjdmOWJkZTdiM2I5ZTJiM2M1NTlhMGQ5NmZhYzczOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzY3NDY4OTg2ZDg3NmViYzBlZGI2Y2NjM2E2ZjVhOWZiYTk4ZGZiYmE0NzUxYTFhOGE2ZDRjNDgxODQ0ZjNkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzc5MjllOTFlMGY5OWMzZTgyNWRlNjliNDM1ZmI2NDg0ZDFiMGExZGYyZjQ2NTYxYWJmMWEyOWYwNDE4OGI4OCJ9" } ] }, @@ -115,8 +111,8 @@ "statement": "The --modelId/--model-id flag (in both space-separated and =value forms) is normalized with normalizeModelId and validated with isValidModelId, producing an error for invalid model IDs.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L866-L906", - "version": "repo-lines-v1:sha256:082b28031c183464d6b4a394c20bcae265371db7976c5fc030a3a4472f9954d2:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYwMGE3MjllMzY3Yzg2YzA5N2I0YTdmY2VmZmZkMDgxMGUzNWVjMmU0M2Y5OGQ5OTg1YzNjMjk5NGFkYmQ4MDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZjdjNmYxYTFjMGNjOWUyZmI0ODYzYmNhMDEyZTMwZmYyNjMwOWY5NTZhM2Q1YzIwMzExMDljOWIxNDJkZTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRlYzM4MWZlNmJhNTZkZjcwNzAxOGEwZTcxMGIzNzg5NWJmNzA4ZGUwYzZlNDc1NzFlOTkzMmEzZmE0MmI0NTQifQ" + "resource": "repo://src/cli/commands.ts#L865-L906", + "version": "repo-lines-v1:sha256:26cd998ad13dbb7b4a80a92dd1068b1c71e31a8ee1de9ddd7cb93e66099ad94c:eyJzZWxlY3RlZExpbmVDb3VudCI6NDIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYwMGE3MjllMzY3Yzg2YzA5N2I0YTdmY2VmZmZkMDgxMGUzNWVjMmU0M2Y5OGQ5OTg1YzNjMjk5NGFkYmQ4MDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZjdjNmYxYTFjMGNjOWUyZmI0ODYzYmNhMDEyZTMwZmYyNjMwOWY5NTZhM2Q1YzIwMzExMDljOWIxNDJkZTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg5ZTEwYWVhM2U0MTJhNGZiODViN2MyZDk0MTVlZGUxYjQxOTBjZDU4NDdmMDk5ODQ3ZTNjNzlkYTgwNjY1NGMifQ" } ] }, @@ -125,12 +121,12 @@ "statement": "--debug sets process.env.OPENWIKI_DEBUG at parse time, and --dry-run is a developer-only flag rejected as unknown outside development mode (NODE_ENV=development or OPENWIKI_DEV=1).", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L1043-L1047", + "resource": "repo://src/cli/commands.ts#L1051-L1055", "version": "repo-lines-v1:sha256:a2fb82464f1722740c42f4e6760c96aad5d53a8fa2b393d2638c6698b2687750:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTJiZjJjMDk5ZWViODgxZTFlZDNlNjlkM2M0MGFhNmZmNDIxNTdmMDQ4OWU1MmMyYjM0ZmQ5MTQ2YmVhMDc4ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDk0ZmMwYzE3M2QxZWMzZmM1MDFkN2RmYTkyODU1MDFjNTI3Y2ZiNDcxMjU4M2RhM2NjMzYxODA1NjZiNGJlMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWIzNjFlZDdhMTgyY2UxMGMxYWM0YzFiYmY1NTk5N2Q3N2NkMDQ2NzU5OTM2YmZjZDNiYjk0MWE5NmE3ZjAzMCJ9" }, { - "resource": "repo://src/cli/commands.ts#L759-L782", - "version": "repo-lines-v1:sha256:da4a93614481a80a846bcaea96e9a7dbc261147e8e31f39f4925813e9ef27d8d:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4NzFjZGQ5ZmE5OWIwMzQ2ZjBmNDU4ODc4Y2NjYzM1Y2RjYWVhMDQzNzc4YTI0MzE3ZDVhNDI4ZjZhNjNlODMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNjYThkOWI0NTcwOWUzODVkOGUxNjcyMWE4MzAxNTcxMzQzMDM4ZGRhMGY1YmZkY2FlNmE4MjhlZDkxZTE3ZDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJmZmViNDM0OGVlZmYxYjQ3YjU5N2ZmNTFlNzZlMTc5NjljMmQwYzNjM2YzZWFjODBiNDAxZGFhMzM1MjJkZjIifQ" + "resource": "repo://src/cli/commands.ts#L758-L769", + "version": "repo-lines-v1:sha256:7c0e5226aa9e84044610a6e0f91c96977dc18e36e48ca0cc68d1c499723dbcd6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4NzFjZGQ5ZmE5OWIwMzQ2ZjBmNDU4ODc4Y2NjYzM1Y2RjYWVhMDQzNzc4YTI0MzE3ZDVhNDI4ZjZhNjNlODMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNjYThkOWI0NTcwOWUzODVkOGUxNjcyMWE4MzAxNTcxMzQzMDM4ZGRhMGY1YmZkY2FlNmE4MjhlZDkxZTE3ZDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcxMTQ0MzEzZDBlNTA3YWZhZmVkNjQ4NzBmY2JjYmUwZmViZTUyNDJkOGZkZTFmOGQxYTk1YzNhMjNmYmEwMjUifQ" } ] }, @@ -139,15 +135,15 @@ "statement": "Run mode is personal or code, tracked by modeSource (default, positional, or option); it can be set by a leading positional mode word, a first-slot positional mode word even when flags precede it, or the --mode flag.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L527-L531", - "version": "repo-lines-v1:sha256:ad4df06a369db0b6aff864442860da7170d4be96acac38ad88fa675765f46937:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTA4OTJhMzU0MWQ0Mzc4YzBiYjI1NjBhMTY2MzY5MDExZGQyM2IxOWUzMGI3YWY0ODM4YjE2YzhkMjMzZDRjMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDA4ZjIyYWQ5OGVlZjRmYThkMjA0Mzc1ZjJjMzcwNzNkZjliNzA0ZGM2MjM4ZjYxZDk1MjZiMjJjYzlkNGNjZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTdkODYzMmU1NGU5Mjk4YWJiOTU4NzI3ZTJkNTE0MDhhYmFmMTM2NjAzNTM3OTEwMTQwYWJmNjViMzBhYjYxMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzc5MjllOTFlMGY5OWMzZTgyNWRlNjliNDM1ZmI2NDg0ZDFiMGExZGYyZjQ2NTYxYWJmMWEyOWYwNDE4OGI4OCJ9" + "resource": "repo://src/cli/commands.ts#L526-L531", + "version": "repo-lines-v1:sha256:767f9bb2c5260daf8d0e0f5c0b70010134e3e2d8d98690375b35325577de06f1:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTA4OTJhMzU0MWQ0Mzc4YzBiYjI1NjBhMTY2MzY5MDExZGQyM2IxOWUzMGI3YWY0ODM4YjE2YzhkMjMzZDRjMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTdkODYzMmU1NGU5Mjk4YWJiOTU4NzI3ZTJkNTE0MDhhYmFmMTM2NjAzNTM3OTEwMTQwYWJmNjViMzBhYjYxMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2NlYmQ3Yzg1OGFkNGI1Y2QxYjQ3NzVkYTBhNjUwMTI4MGNjZjI4ZDlhNDEyMGEzNzlkMDc5MTNhYzNkNDlkYSJ9" }, { - "resource": "repo://src/cli/commands.ts#L815-L864", + "resource": "repo://src/cli/commands.ts#L814-L863", "version": "repo-lines-v1:sha256:c0d1be879c84ffd86237d746dc9f24ccd6db8237b879bf30466c9e655078bd67:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2MjhlYjdjMTIzNzA4ZTBmNzhiNWVhN2MyMDdiYzJjOGU1NmRmOTEzZDRlNjZmYTk5MTYzMDYzM2NmYzliNWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZjdjNmYxYTFjMGNjOWUyZmI0ODYzYmNhMDEyZTMwZmYyNjMwOWY5NTZhM2Q1YzIwMzExMDljOWIxNDJkZTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4NWIwODkyYjVjMTk0NWU5NTliNDEzYmQ2NTkwZjU2ZmM1MzBjMzQ2NDhkMDA4Njg0ZTRlZmRhYTA0YTkwNWYifQ" }, { - "resource": "repo://src/cli/commands.ts#L947-L959", + "resource": "repo://src/cli/commands.ts#L946-L958", "version": "repo-lines-v1:sha256:5e4ec6caea62daa6961e61c2578f9b0aae53406aabf31b32ae050db1ddc517e8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3YjE2YTg1YTJiOTA0YmUzZDhlOTNlNDc5Y2RjMzhhNTUyYTFkNDJjODcxNGViOTVkODZlYTAzNGQ3OGQzNDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRmM2E1MDYzMzBiMGU1NDBiZjM1ZDYwZGM2ZjZlNTNmZDBkNmE0ZjllNGM3NGIyOTI0NGQ0YzMyZmNjMTkxZjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJjZThkY2U5YTYwOGY4OWI2YWE2YzAwOTkxM2JjNzA3OGExMzQ1YjM4ZjY0YWFmZWNmNjllMzRjZTI2YTgwNjkifQ" } ] @@ -157,7 +153,7 @@ "statement": "An explicit --mode that conflicts with an already-selected non-default mode is a parse error via resolveExplicitMode.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L1001-L1017", + "resource": "repo://src/cli/commands.ts#L1009-L1025", "version": "repo-lines-v1:sha256:7ca5b465d44d95c0ab4ca887cfc4055538aec19d1fc317585bbc9134c080106f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3NWM5NmMyMmU0Njc4MjdiMTMyNGU0NzIwMmU5YzQ5OTNjNTY3ZDNmMmFkZjM0N2QwYzZkYmRmZmZlNjhkZGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkyMDQwZTA5NWE5NGUyYWRhNzRlNDIxZjM3MTg3NTFhOTFhODEwYmZkNjZmNDhmNGU5MzljN2I3NDgwZWI2NzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjExZDVjNGY4OTM0ZmI5YjM2ODk3MzE2MGM0ODkzNWVhNzFkMTljYmQwYzdiZWZjNDczYzk5ZTg3NzMyZTQzZGEifQ" } ] @@ -167,12 +163,12 @@ "statement": "When no mode is selected, a run defaults to personal, but init/update runs with default mode source are promoted to code.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L742-L743", - "version": "repo-lines-v1:sha256:c4e766ea2a298a1d03a5b33308624e6d63c35fa2c626f9c1504eb71a1dc7e2fe:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGFjYjQ5ZTBjZDlmN2ExYjA3M2EyYzFhMWVmODhiOGFkNzBjMGYyYjhmYjgyNWY2NDNhNDllMzkyMWQ3NjQ2OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmFmNzNkNzQ4YWExZjRlYWZjNjQ1MGM0NzUxNzQxZjliZjZkNDIxOGJkMDdiOTllYjRlNDYzNmQ2MTVlODIwYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2NiOTViMTU4OGUwODE5MDI5NTI2MzRjNGY4NTQ0Yjk4Y2I0MGQzMWJlYjI5NTg4N2I5Mjg0ZmYxYmUxZDdiZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjI3MmU5YzA2ZGY5NGU4MDI4YmQ0ZGViOTA0NzQwMjMwNGIwNGE0NTMyODljOWM3ZDM5ODgwZGRjNmQ2Y2FiMCJ9" + "resource": "repo://src/cli/commands.ts#L530-L531", + "version": "repo-lines-v1:sha256:1f17fa9b4b3dcafcce01599ec00f772342dd388dc84e6189f086b5b8dad2e3ab:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDA4ZjIyYWQ5OGVlZjRmYThkMjA0Mzc1ZjJjMzcwNzNkZjliNzA0ZGM2MjM4ZjYxZDk1MjZiMjJjYzlkNGNjZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWIzYmFiNGY1NjdmNWUyNGQ1MTIxNDdhOTAyMjNjMTBiNmYzZWYzODNiZTAyY2FlM2NjMTQ3ZjA3OTc0NDVmZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2NlYmQ3Yzg1OGFkNGI1Y2QxYjQ3NzVkYTBhNjUwMTI4MGNjZjI4ZDlhNDEyMGEzNzlkMDc5MTNhYzNkNDlkYSJ9" }, { - "resource": "repo://src/cli/commands.ts#L972-L974", - "version": "repo-lines-v1:sha256:8419512428149639cc9fd589d04f36b939166fbe0587d04804d2165a659eb992:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWRiNjg5MzRkMDcxN2FjZTM5ZDA0ODJhNDkyYzhiZTRkYzg4YTFkNGNhOGU5Yzg0MDM4MmJiOWI5YTA1NWM3MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzgwNWQ2Njk4OTFlZWVmZGQ1ODU5MzczMjJjYTJkOThjNTFhMjNjY2U5OGE1YjQ0NTIyMGMwMGVjOGUwMjA2NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjEzMGIyYTk0ZTRmMTc1ZTNmOTA2NWMzMWJiNDllZDY5NzM1Y2RkMzZjNmMwYTY2YjIzMjQyMGIyZmVmMGQzOSJ9" + "resource": "repo://src/cli/commands.ts#L980-L982", + "version": "repo-lines-v1:sha256:8419512428149639cc9fd589d04f36b939166fbe0587d04804d2165a659eb992:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWRiNjg5MzRkMDcxN2FjZTM5ZDA0ODJhNDkyYzhiZTRkYzg4YTFkNGNhOGU5Yzg0MDM4MmJiOWI5YTA1NWM3MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmVlZWZkZDUxMTNkOTkwNTZmMWUxOWRlMWI3ZDViZWRlNmUwYTMwMWY5ZThmN2JlNGVhZDNmOGY4ZGE4NjZjOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjEzMGIyYTk0ZTRmMTc1ZTNmOTA2NWMzMWJiNDllZDY5NzM1Y2RkMzZjNmMwYTY2YjIzMjQyMGIyZmVmMGQzOSJ9" } ] }, @@ -191,12 +187,12 @@ "statement": "shouldRunNonInteractively selects the print path for a non-dry-run run when --print is set or when stdin is not a TTY and the run was asked to start, causing the entrypoint to call runPrintCommand instead of rendering the Ink App.", "evidence": [ { - "resource": "repo://src/cli/cli.tsx#L98-L115", + "resource": "repo://src/cli/cli.tsx#L93-L110", "version": "repo-lines-v1:sha256:9755a5d2ecd5bf89daef44890a156dfe4192f002e0f3570364e7ddcae6d386be:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNiYWQwOGI1MGJjNWQ3OGIyZmRlMmNkYTc2YjZjOTYzNmQ0MWRhMmE2OTZhOWIyMDAwMzBkZmE1OWRjM2YyNzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU1NzMxMjQ4YzAwMDhiYWY5OTJlNDU4NTI1ODY3YmUyMTQyMzYxNTg0MWFkOWYwZmU3MzE0ZjcwZTYwNDk2MTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEifQ" }, { - "resource": "repo://src/cli/commands.ts#L1032-L1041", - "version": "repo-lines-v1:sha256:61aef754a7ce007581e3869b8bc94177d3a66697c95767d604dbfc4795fb6fa0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlMzNlN2NkODBiN2FhMDYzY2I1ZTVjNzU4NzM2OWJkMDQwNmQ1ZjEyMDIwZTZlM2EyN2JhN2Y3OWVkMTcyYTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM1OTQ2M2Q1MzRlNTNhYzhhM2ZkNTJlYTg1ZGRmMDJlM2ZjNDg2NzFkNGY5OGY2NGE0NTVhOTQxMTM1Y2E1OTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlmYzdiMmZlMGExMmJiZGE1MDE5ZGY3NzYzNDVlYTRiYWY2OTcxNzQ0MzZkZGQ0OGEzYjFkZTI0Y2I4NmE5Y2IifQ" + "resource": "repo://src/cli/commands.ts#L1040-L1048", + "version": "repo-lines-v1:sha256:8f756134a1dc095503dda5e8cae257cd2e5605444ff625156cac39030d1a5f94:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWUzM2U3Y2Q4MGI3YWEwNjNjYjVlNWM3NTg3MzY5YmQwNDA2ZDVmMTIwMjBlNmUzYTI3YmE3Zjc5ZWQxNzJhMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTVlZjAxYmMwOGRiYzNiNjNlNGU3NWVhM2QyNmE1Yjk0MTg5MTg3N2UyN2FkODkxMzI5Yzg0MTFkN2Q4ZGM0ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzU5NDYzZDUzNGU1M2FjOGEzZmQ1MmVhODVkZGYwMmUzZmM0ODY3MWQ0Zjk4ZjY0YTQ1NWE5NDExMzVjYTU5MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWM2NjViZGRmMmZmZTRmODZiY2Q3MWJmYTYyMjBiYzU4OTFlZmE4NTQ2NzIxNWFmMDBlODdhZTI1MzNmMmQ2NyJ9" } ] }, @@ -205,8 +201,8 @@ "statement": "resolveStartupCommand downgrades a run to an error when interactive chat with no message runs without a TTY, and when a non-interactive run is missing the configured provider's credentials, with a narrow skip for a clean update before credentials are needed.", "evidence": [ { - "resource": "repo://src/cli/startup.ts#L123-L130", - "version": "repo-lines-v1:sha256:a24c565e3771b7f2cadebd7f905a233b478a9fdc0286e4609a06c4665cfdf14c:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTkwOTBiZDUxYTk0MTc4NWFmYTFlYzdjZDczNmM2Nzg3OWQ0NzZlY2JhYmM3ODJiMjQxMDM1OTEyMTdjNjM4YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTliODNkYTk3NDE1MzBkOTRhMTAyNTZkYzZmNzBkYTliNWJjNDU5OTkwZjMyYjMxYzE2ZTI2M2MwMDAzN2I2MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTQwZmQyOTBhZGM3YWQxODVlZjM2N2QyZjljMmQwZmY3ZTBiNTk2YjNmMDNlNTY3MzMwNGVkZmE2YzI4ZDNmYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzBhNDRlMjM4YWJlNTU5ZTNiNDk1YjEwNWI1ZjhkOTJmZDYzYzQwNWNlYTgzM2NlNjUxNmI4ZTQ4MzUyMzA2NiJ9" + "resource": "repo://src/cli/startup.ts#L123-L141", + "version": "repo-lines-v1:sha256:e9a04b509d3192f5857177eb97424e0f38fa0b5279f401486fdb0b43235ec619:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU5MDkwYmQ1MWE5NDE3ODVhZmExZWM3Y2Q3MzZjNjc4NzlkNDc2ZWNiYWJjNzgyYjI0MTAzNTkxMjE3YzYzOGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg0ZTQyMDhjZDZmZmI4YzRhMzU0N2IyZjU0YWRhMTk5NzhjM2YzNjVlNzhmOTUwMmVmNTE0NWNkZDJhYTg1NDMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU0MGZkMjkwYWRjN2FkMTg1ZWYzNjdkMmY5YzJkMGZmN2UwYjU5NmIzZjAzZTU2NzMzMDRlZGZhNmMyOGQzZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2N2Y4MjQ2ZGE4YjgwMTQ0N2MxZTA0ZGY1ZDY3YzZmNmIzMTU1NzY3ZGRiMGRmOGNlODAxOGE2MjU5MDllOWUifQ" }, { "resource": "repo://src/cli/startup.ts#L24-L93", @@ -219,12 +215,12 @@ "statement": "runPrintCommand and the interactive App share run machinery: both wrap the run in withRunTelemetry, run ensureCodeModeRepoSetup (creating the workflow on init) and code-mode connectors in code mode, and then invoke runOpenWikiAgent.", "evidence": [ { - "resource": "repo://src/cli/app/app.tsx#L60-L70", - "version": "repo-lines-v1:sha256:68a06048700f6084c1189a0da1139eb8418b76088ddab67230a5d0ce833bc953:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4YjAwYTlhMmVjOTVmYzE1NmVhNjA4YjMyNWExYjk1ZDY2MjdmZmJjMGUyZDRhMzQ4N2YxOTc3NGU4NzFlZDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViOGIzMDA0ZjFiZDJjMmNlZjEzMzYwNmU1ZDcyNWM5NjQ2NTUwMDdmOTMxMjhiNDk0NWYyZGMzM2RlZmRlMzkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRkMDdiN2VlYWFhODZjMjFlN2Y3Mzg4NjJlODM2Mzg1ZDVhN2EwMThkNWE2MDA5MTQ4ZjQ4N2U3YzgyY2I3MTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgzOWUzYjlhN2QzMWJlNWU3NGQ2MzM2OGY1NzBkMTc5NTk4ZDJjYmFlYjNjNGJkNmUxYzM4MjgyMzg0OGYxNTEifQ" + "resource": "repo://src/cli/app/app.tsx#L574-L606", + "version": "repo-lines-v1:sha256:8bcfce7410c9f7c7c2683b271b7cc39b2eb06a23f851af2fae72bb936024d7f1:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmNjlmOTI1ZTc3N2Q1MTBhNmRmOGNhZTZiZmU0ODQxODRiYmVlZTcyMTZjMGI2MGFjNzBiMzMzMDllNjI4MzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwYzFmMTg4ZjE0MmVkN2E4MjQ2ODBiMjA3MTcyYzU1MTliYzYxNGE0OGZkYTdjZjE2N2VkYjhkZGY3OTk1NmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ1MWJmNDI2ODU4ZDI5OWRjOTQ4NGMyZGE3MjM0ODBkYjdmMjVmODZmZjVjZmI5ZDVjNzBiZjAyMTE5YjBlNWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc5NDZmNTQ3OTlhNTFjNmFmZTJkYjNjOTc5MTVmNGRjYzA4MWViZTU5MjRjMWVmNDU4MGRlMGYzNTVjMmViZDIifQ" }, { - "resource": "repo://src/cli/runners.ts#L261-L324", - "version": "repo-lines-v1:sha256:e9184028c6112964c002ea49242abdcfc98e6ab0f795649bf99de7c564b43189:eyJzZWxlY3RlZExpbmVDb3VudCI6NjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiNGJiZGEzN2E5NmI2YzgyOGM4YzdkODhmZmUzY2Y4ZDU0OTcxMzNlYzFhOGRiNWJmZjY4ZGVjMjdmM2M2YzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg0ZTQyMDhjZDZmZmI4YzRhMzU0N2IyZjU0YWRhMTk5NzhjM2YzNjVlNzhmOTUwMmVmNTE0NWNkZDJhYTg1NDMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5YzVlMjYzNmQ1ODZhNzRhMWExOWFkNWQxNGUyMzRhM2RkOGIxNDEzOWJjZmY5OTQ4ZDBmMDNjNjViNTdiMDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVkYjczZjRiNTUwZjkxMzVhZjM5YWFkMTllMjkyYWQ2ODIxYmRlMTIyOTcxMTZlY2RiNGRhMjRlMmI4MmE5ZWEifQ" + "resource": "repo://src/cli/runners.ts#L294-L324", + "version": "repo-lines-v1:sha256:fd3762f3f14cf6b94ae37421ee6df31c5f0efeb5f708ddb48ad2babddc0161b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVjOWNlMGY0MDM4ZmM3MTE0NDZkODg4YmRjMjk5NDM4MGFiYmFlYzViNjhmNTU2MDkxZDUwNWM3MDIzOTEyYjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg0ZTQyMDhjZDZmZmI4YzRhMzU0N2IyZjU0YWRhMTk5NzhjM2YzNjVlNzhmOTUwMmVmNTE0NWNkZDJhYTg1NDMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlkYmQ4MDU2OWRmMTc0Mzk1NmZhZGMwYjJlMGVmZmU1MDc5ZGMwYjRkMjRiZTA2YjE4NGNiYjE1NDA2ZjRhYzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVkYjczZjRiNTUwZjkxMzVhZjM5YWFkMTllMjkyYWQ2ODIxYmRlMTIyOTcxMTZlY2RiNGRhMjRlMmI4MmE5ZWEifQ" } ] }, @@ -247,12 +243,12 @@ "statement": "integrations install and uninstall require a host target validated against the installation registry, while list takes no target and reports each registered host's status; parseIntegrationsCommand rejects other actions with a registry-derived usage error.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L540-L567", + "resource": "repo://src/cli/commands.ts#L539-L566", "version": "repo-lines-v1:sha256:d5f7e7b99e858c88fe533f4cbc8604350e28e10128bb616d1bf9e12599c2cc7d:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEzZjdlNTNmMTVlNjNiYmJkZjMwNjBlODk1YWZhZWM2YThhNGMyZjM4ZjY3ZTU0MTJiYTQ2ZWU3MzY5YzY0YzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVkMDQyNjVkMzlmZmJiMWMwMzAxNWZmNDljMjU2YmU3MjQwZWIzYTcwMDJhNjcwYTc5YjZmODk0ZTRlNWE0YmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY3MmIwNTIyMzM4YjI5ODIyNDc0ZmJhODdlNTUyNDMwZGU4MWE4ODdhZTkwYWU0MjY1M2M0Y2JhMzU4ZWEyZGYifQ" }, { - "resource": "repo://src/cli/commands.ts#L713-L734", - "version": "repo-lines-v1:sha256:57145cee0124497506b829aea7e6da25a5cac559a35409f5cc6ddb068f6b161a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1NGI2ZDUwMjVkMzhlYzFmMTYzYTQ5N2QwN2YzMjJkNzFhY2I3MmQ2NDZmN2E2NDJkNmU3ZGFkMmU4ZjM5MjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJiZjM3OWQ2NDkyZmQ4MTY3YTg3ODRkZDhkOTBiYzc1NDNhMjk0YzQ3ZGNhMWI1ZmU4NTg2OWI5YmMzNzBjYjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM3NzM0NTViNGM0NzVjMGZmMDBmYmE1NGNhOTdhYWJmOTVjYzE5M2M5NDdmN2Q4YzM4NmU4N2IyMTY0ZWZkNjIifQ" + "resource": "repo://src/cli/commands.ts#L712-L721", + "version": "repo-lines-v1:sha256:f22477e629c04b9d00619b05f8889224b4878bd2ecfc91d05fa77fdd78377bec:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1NGI2ZDUwMjVkMzhlYzFmMTYzYTQ5N2QwN2YzMjJkNzFhY2I3MmQ2NDZmN2E2NDJkNmU3ZGFkMmU4ZjM5MjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJiZjM3OWQ2NDkyZmQ4MTY3YTg3ODRkZDhkOTBiYzc1NDNhMjk0YzQ3ZGNhMWI1ZmU4NTg2OWI5YmMzNzBjYjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2Mzk5ZTE1N2ZjODhiNzc2OWI1NDYyZDBhYmJjMDBhODNhNzRiNjA2MTRkOWE4YzdhOGY1OTJiMDY0MjkzYzgifQ" }, { "resource": "repo://src/cli/integrations.ts#L20-L54", @@ -265,8 +261,8 @@ "statement": "Integration scope defaults to user (home directory) and switches to project when --project is supplied, using an explicit path or defaulting to the current directory; --force is only valid for install and both --force and --project may appear at most once.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L569-L640", - "version": "repo-lines-v1:sha256:9f138372c01c7058dfb445c6cc13158266e4f2dd1fb0034cce3c9cff01b37fac:eyJzZWxlY3RlZExpbmVDb3VudCI6NzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdhZDJiMDEzM2M2NGYxYWMzMjUxZjIzMTk5YjE0YmZkNjVhZDkwNGNkODNiN2I5ZGU5YmRlYzA5ZTQyNTU5MjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyNDVjMmU0OGE1ODUyMzUyMDJhNTAyZjdjOTNkNjI5MTk3OGJkYTEwMmRjMjhlNDAxNDEyN2RkMmVhNTZlYzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ5MWRiMjZmZTcwOTFlYjA1YjU5N2UxYTJmNDEzYmNiYTgzNDZmMzA4MDI2NDRhYTYzMzQyNmRhY2I3OWI0OTkifQ" + "resource": "repo://src/cli/commands.ts#L568-L640", + "version": "repo-lines-v1:sha256:4cda8b0723a287fce63d15752808d99b32826677df9229e66080cdbab72ec3f9:eyJzZWxlY3RlZExpbmVDb3VudCI6NzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdhZDJiMDEzM2M2NGYxYWMzMjUxZjIzMTk5YjE0YmZkNjVhZDkwNGNkODNiN2I5ZGU5YmRlYzA5ZTQyNTU5MjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyNDVjMmU0OGE1ODUyMzUyMDJhNTAyZjdjOTNkNjI5MTk3OGJkYTEwMmRjMjhlNDAxNDEyN2RkMmVhNTZlYzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA1ZGNiY2QwMmI5NzRmMzhkOGYzOGY0NWFkOWI4MGUxY2E5ZjQ2YTZiYzg4Mjg1MDIxM2M2OGU4NDI2YTU5ODkifQ" }, { "resource": "repo://src/cli/integrations.ts#L24-L25", @@ -279,8 +275,8 @@ "statement": "runIntegrationsCommand prints changed/unchanged status with the skill directory and MCP config paths, and after an install prints restart-and-confirm next steps whose wording depends on user versus project scope.", "evidence": [ { - "resource": "repo://src/cli/integrations.ts#L44-L76", - "version": "repo-lines-v1:sha256:2fd2d9abc5ac36ae804640ca4a9ad324078834ef5a2deec27e8078624a088001:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc0ZmQwNmE3M2JmYjQ2NzkzYzk2NzZjM2FjZDVkMTZmYWViMWFiN2JhNzE2YTY0YmNhMjg2MWVmMTJlMjFlYWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMyNTljMDdhZDFjNTVkNzFkNzc0MDBkODQ1NDdlMzM5ODQ0ZGIzNjYzMmIwYWMwYjRmNTlhZjI5NmNhMGRmMDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRlYWVjZmYyZjYzOWMxMzkxZjYzM2E0MzkzNjNiN2VhYTM2NDljYmUzMTkxM2E0MDkxMDNmYzk5ZDFlMzYxMzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJiNjFiNjk3MjNlN2M3OTQzMWU5YmU3OTA1NTg5MjZhZmNhYzE3ZDMxYWY5N2RjOThhNDg1NTViYmJkNTFmM2UifQ" + "resource": "repo://src/cli/integrations.ts#L56-L76", + "version": "repo-lines-v1:sha256:79408a1a0424a879e08da13d341804965c14b083295d1f5d94cabf569181901c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjljMjk1NjI1NjNiODdhZTU5MmY3MGZmMTM1ZDYzMmM1MjczOTYyYTgzODQzMzk0OTY2OTQzZDdhMWVlODRiMTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMyNTljMDdhZDFjNTVkNzFkNzc0MDBkODQ1NDdlMzM5ODQ0ZGIzNjYzMmIwYWMwYjRmNTlhZjI5NmNhMGRmMDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcwNGQ0ZDE0MTMzNTdjZDhjNWY4OTJlMjQwODEzZWJlZTBlYjMxMTNlNTQ4NjIzZjgyZGVkODMwYzIzYzlkNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJiNjFiNjk3MjNlN2M3OTQzMWU5YmU3OTA1NTg5MjZhZmNhYzE3ZDMxYWY5N2RjOThhNDg1NTViYmJkNTFmM2UifQ" } ] }, @@ -289,7 +285,7 @@ "statement": "The mcp command starts the local stdio MCP server; its --host id must be 1-64 lowercase letters, digits, or hyphens (isValidHostId), defaults to 'unknown', and its producerActor is resolved from the registry when the host is known.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L659-L706", + "resource": "repo://src/cli/commands.ts#L658-L705", "version": "repo-lines-v1:sha256:bffda03dc81a277590d358e36a0e2a0928159370e039deef8d417303ae6035cb:eyJzZWxlY3RlZExpbmVDb3VudCI6NDgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhODViYjY4NjIxOTc5NzNmNDliZmY0ZGY5NzE0YWU5ZTk4NTI3NjkwNjc0NTZhYTU0N2MxNzIzNzQxMDU0NzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlkZWJjZTI4YjM0NzYzZWJhNDdhNWY5ZjI5MWUxNTkyMTFiYWY5ZTRmYzdlNmViNDU4YWQ5NTEzZmIwN2RhOWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5OGQwOTQxMGY4NzY5ZmEyZDMxYWU1MGE5ZTc3MzcyYzlkNTZkM2FhZDFhNTM4Y2E1MzBkZGY2YmYwMTQ4MTIifQ" }, { @@ -307,8 +303,8 @@ "version": "repo-lines-v1:sha256:40f762ce70a99a48cb75f5964dde624f93e60b39d2f291975884888147a853a7:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjY0OTlhYzg1NWZjMjVmODhjODRhNTQ0OWVhM2IyMGM1MmU0MzBkZTU1YzVmMmQyY2YzYTVkMzliZDc2MzRlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDExZjJkNzE4Yzc5ZTc2ZDQ2NGRmNTc1MmJjOGJhYzRiODBlZmQzYmM1YzFiNTM5NjQ4MTJkMGEzOWI2YWQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTE5ODliNTA0ZmEwNzRiOGU4OTIyOTI5YTU1YzdiNGIxN2E4MDViZDA3MzRiNGIyZTY4MjcyZTA2NzQzY2YwZSJ9" }, { - "resource": "repo://src/cli/commands.ts#L1062-L1078", - "version": "repo-lines-v1:sha256:1a76832ce6256af78156667611c99de986d1b773bca53c480ae07b8396ab99a9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFjMWRkMGZmODllMWE5YTdlM2UxMjdlZTA5M2VlN2EzYmJkYzNmNjAyYmU5ZDBlODM1N2Y1YTY5OGVkZTNhMDUifQ" + "resource": "repo://src/cli/commands.ts#L1078-L1086", + "version": "repo-lines-v1:sha256:a0a5077be4d04d8c2ac93022531fb1e90a719007b59d86865139a2cffc14854d:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDIzZjJlMTViNGE1MjZkOTI2ODkzNTNiODBlNzFlNjU5OWNlN2QwYTRlYzE0YzBlOTM1OTJmMDZjZmUwMTExZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWE4NTYzZTkyNTA5MWRiNGYyM2ZiYjg2ZTZiM2NhODZmZTMwZDAwMjk2Zjk5YjI3NzE1YzAwODZhMmFkZDk0MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWMxZGQwZmY4OWUxYTlhN2UzZTEyN2VlMDkzZWU3YTNiYmRjM2Y2MDJiZTlkMGU4MzU3ZjVhNjk4ZWRlM2EwNSJ9" } ] }, @@ -318,11 +314,11 @@ "evidence": [ { "resource": "repo://src/cli/cli.tsx#L75-L78", - "version": "repo-lines-v1:sha256:e3589676ae105e805abb41b18c0cfe93700865c08e53fee0e878fd4f986cc6e6:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGUyNWI1OTMyOTk0OTI4NmQ0MWI5NDFmYmU4ODE3MmYzOWNjN2FhNzUyYmZiOThjODU2YmQzMThjOGQ4ODhkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODQwZGI0YWE0OGVhMTliMzhmMDRjZDYzNjY5MDgyY2U4YWJiM2E3NWE1ZmEyODBlNjE2M2NhYjBjNThlN2JiMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTIzZjVmOWI2ZjI2OTZjNmNkMmJkYWYxMzc5YzFjMmI2NTM4Yjk1YzJjMGQzZDM0ZGM1ZDlhZjRlMTAwZDgyMSJ9" + "version": "repo-lines-v1:sha256:e3589676ae105e805abb41b18c0cfe93700865c08e53fee0e878fd4f986cc6e6:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGUyNWI1OTMyOTk0OTI4NmQ0MWI5NDFmYmU4ODE3MmYzOWNjN2FhNzUyYmZiOThjODU2YmQzMThjOGQ4ODhkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODQwZGI0YWE0OGVhMTliMzhmMDRjZDYzNjY5MDgyY2U4YWJiM2E3NWE1ZmEyODBlNjE2M2NhYjBjNThlN2JiMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWQ5YzQ3ZjRiZTJmNmM0OTUzMDNmNTZhYmEzNjc3YjJhOWExM2Q2NzZhMWE1OTQ1OTk2ODk1ZmQ1MDM2NDNmNyJ9" }, { - "resource": "repo://src/cli/commands.ts#L1049-L1060", - "version": "repo-lines-v1:sha256:ef40ae736c21fc42dd47fca7086d383cd282fa41a9d04f94470cd03b1c814120:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFhZWViMGYwMmRkZDI0ZDA4NWFiNzI4NjM2Y2I3MWQwOGI1NGY4YTEyMGEzZGI1ZWVmZjNiZjMwZTY1OTAzYjcifQ" + "resource": "repo://src/cli/commands.ts#L1062-L1068", + "version": "repo-lines-v1:sha256:8bc4fd202d34df826bc8a5dd33464f2e14368c412352c1d6d9617def6c4173e4:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDczYjc5MWFjZGI4ZDAxY2E3YzQ1ODhjN2JjOTkxMGNiOTc5NDBhMTEzMGNlNzNhMDFhZDc2YmVlNDExZjg3NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2Y3Njk3ZGFkNDcwZWY1YTI3NmUzMjA3YjVjYjY4NGQyNGE2ZTYwZGQxOWY5M2E2MTFhNTc0Zjc5YTNlMjRmYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWFlZWIwZjAyZGRkMjRkMDg1YWI3Mjg2MzZjYjcxZDA4YjU0ZjhhMTIwYTNkYjVlZWZmM2JmMzBlNjU5MDNiNyJ9" } ] }, @@ -331,7 +327,7 @@ "statement": "The auth command supports oauth (default per-provider), configure, tools, and list actions; --force is valid for every action except tools, providers are validated via isAuthProviderId, and unknown options or providers produce action-specific usage errors.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L182-L241", + "resource": "repo://src/cli/commands.ts#L181-L240", "version": "repo-lines-v1:sha256:a6b72062383b8ec5666148cdddd55b5c432cdd64eb56b7aaeb7d1b43d1ed4791:eyJzZWxlY3RlZExpbmVDb3VudCI6NjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyOGQzZGI5NDYzMDIwOThiMzIxZDQ5NjU1ODJjZjljNzM4NGFjMzdhNmM5NjQzOTQ0OGY5MmVlYWVjMmViMGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE4ZDFlMmE2NjU2YWRhYzNhZmVhOTNjNmVkZWRlNjI3YmE0YjQ0MmNlM2FjZDg3NTI4OTY1NjlmNGIyMzRlOTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhiNTcwZmVkMjMxZTU0NTQzOTE2ZTc4NDczY2JkMGZhMzRkOWU5YWZkMGE1MzFlZGU2ZWM4MDY0NTA1NDljNzgifQ" } ] @@ -351,7 +347,7 @@ "statement": "The ingest command parses a target of one source, one source instance, or all (default all) and accepts --print/-p, --scheduled, and --modelId/--model-id; runIngestCommand streams text to stdout, prints a per-source summary, and exits non-zero if any source errored.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L405-L487", + "resource": "repo://src/cli/commands.ts#L404-L486", "version": "repo-lines-v1:sha256:a1d00b087b0fb32ad67aefc4e1ec6d0d1fb3e70cc6a54722029324174b0c0ddb:eyJzZWxlY3RlZExpbmVDb3VudCI6ODMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI5MjYyMDY5YzgzZGU5MmYzNGJjOTYxNTQ0ZDcxNzkwZjU1N2NiYzBhZGZmYTI4MTBlN2Y0OTRiNjk1OWNkYTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQwZjA2YjlhMzk4ZThkOGVjNzQ3MTg4YjU4NDdhYTRhYmUzOGI4NjhkZDg4NWUxNjVhNjI1ZTE1OTk0YmQ3YWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI1YmM1ODU1ZWFhY2U4NTdjOGMzYWJmOTI4ZWZlMjVlNGU5M2RmODljNzFiMzU1MjEzYTllZDM0YTkyNzkwNWYifQ" }, { @@ -365,7 +361,7 @@ "statement": "The cron command supports only list (no target) and pause/resume/delete with the literal all target; any other form is a usage error.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L489-L525", + "resource": "repo://src/cli/commands.ts#L488-L524", "version": "repo-lines-v1:sha256:aaafa859d907ece31edf3ca5047d73f9186586bd24b421fde03e0335b3381c31:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA0NDk3Mjg4YjQ4MTAzMGE5Nzk3ODEwODM1NjgyMTFiNDQwNDkwZWNlMjEyMjE1NTg3MGY0YzQ3MTNhYmRhNGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJlZWVmZGQ1MTEzZDk5MDU2ZjFlMTlkZTFiN2Q1YmVkZTZlMGEzMDFmOWU4ZjdiZTRlYWQzZjhmOGRhODY2YzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU1YmE2NmYwYzI1NjkyNmU4OWZhM2Q4Yjg0YTdjZGI2YjIyZWIyOTEwMGNmODUwMDUyOTEzZjZlY2I2NzNiOGYifQ" } ] @@ -383,8 +379,8 @@ "version": "repo-lines-v1:sha256:9b530be5dc8a631eab7902039ad9e1949024b5ec2292a72bf6595a1e7223bebd:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1MGJmZWIzZGQzOGMwYWVkMmU0ZTQ0YmM2ZmVjNThlZGVjYTc4ZDIxZjUwNDVhMzdhMThkYzlkMDlkZDUyMWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiMzBkNTA1YzNiYjE1NGY0ZWFhZDU1Zjk1YjQ4NmRkNWNjN2ZiZWM3NjU4MThiY2FjM2EwNTM1YmZmNzgwNmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFhNzI4OWJlMWY5ZGIzNDIzODQ4MjhjYTVlNDM5YWYzMmIzNTYyYzc3ZjZlZTQ1N2NhMTE0NTJjMmI5ZDBhZWQifQ" }, { - "resource": "repo://src/cli/schedule-format.ts#L72-L149", - "version": "repo-lines-v1:sha256:eab00ec1c6e8b128ac81824c0a465a26ceb13e32a467c85198a72172afb3056f:eyJzZWxlY3RlZExpbmVDb3VudCI6NzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMxMTc1NDQ2MjE0YzVjODExMDVkMzBmNjBhNDM2YzQ3NGRmYjk2YzE5ZmI0MDE5ZWFmZTdhODQ4YzE2NWM1Y2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQyNzNhNDBhOGFlMTNkZGU1NmQ3MzVhODk0ZjRjYWJlMmQ1ZmM4NDBkYWEyZmNiOTg3NzZmYTAwOWI1MTM5OGYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMjkyOGE3OTczZTY5MjYyNDc5ZWNjMzg3OGM1OTJkODcyZGQwNjA1MjY2YjY3ZTViNGIyNjFiNTkyY2QxYzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdiOGMzZTU2ZDVjZDlmODgxMjc2YmEwMTI0ZWIwMmI2MzQwYmY0YjRhZWQxNWI4MmIwMGU0NTE4ZGQ4NzJmODQifQ" + "resource": "repo://src/cli/schedule-format.ts#L72-L159", + "version": "repo-lines-v1:sha256:6c2527df5963f297051caa24ac1be1c270ee7d2c59f66dd0f165dc5acf0d39f6:eyJzZWxlY3RlZExpbmVDb3VudCI6ODgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMxMTc1NDQ2MjE0YzVjODExMDVkMzBmNjBhNDM2YzQ3NGRmYjk2YzE5ZmI0MDE5ZWFmZTdhODQ4YzE2NWM1Y2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMjkyOGE3OTczZTY5MjYyNDc5ZWNjMzg3OGM1OTJkODcyZGQwNjA1MjY2YjY3ZTViNGIyNjFiNTkyY2QxYzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" } ] }, @@ -393,7 +389,7 @@ "statement": "The ngrok start command accepts an optional url positional and --port (default 53682, validated to 1024-65535); runNgrokCommand delegates to startNgrokTunnel.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L243-L304", + "resource": "repo://src/cli/commands.ts#L242-L303", "version": "repo-lines-v1:sha256:22940a4368ec1e13b10e5b4572197edc0dfe82ffa502250e17a2ad9dfada870e:eyJzZWxlY3RlZExpbmVDb3VudCI6NjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyMDQzMGQ1YmEwN2NkZmU3NWFjNjFlYjA5MDM2YjljY2QzMWJjYmFjZTNkMGUwYzhmODNiNmQ1YmI2MTVkYjkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJlZWVmZGQ1MTEzZDk5MDU2ZjFlMTlkZTFiN2Q1YmVkZTZlMGEzMDFmOWU4ZjdiZTRlYWQzZjhmOGRhODY2YzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4N2Q4ZDg3MjU2ODZlNDgzYmM0NTMwNTYzOWQ0N2Y0OGQ0MmI1MDhlNzE0YzMzMmM1YzU5ZmE5NWIzZThjYzgifQ" }, { @@ -407,8 +403,8 @@ "statement": "The visualize command serves a live graph/reader from the wiki directory (default openwiki, default port 4321, opens a browser unless --no-open) or exports a static site with --export , and --export cannot be combined with --port or --no-open.", "evidence": [ { - "resource": "repo://src/cli/commands.ts#L306-L402", - "version": "repo-lines-v1:sha256:bd5742440e7f2c255170b0d79802b27c82ac22aed14eaf4075d9a2f8519fc682:eyJzZWxlY3RlZExpbmVDb3VudCI6OTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4MmJlMzI0Mjk5NWQyZjAyNTdlMDdhOWZjODNkOTBkYTkyY2ZkNjg4YjE5OWNlYmUxOGIyMDRhOTFmYTQ0Y2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRiODNjZWVmMmQ4ODIxM2NlZDE3YTFjNTY1OTg4YzhkOGJiYmYzNzA5YzY1OWI1ZGI0MGFhNzZjZGJlOWMzNTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJlZWVmZGQ1MTEzZDk5MDU2ZjFlMTlkZTFiN2Q1YmVkZTZlMGEzMDFmOWU4ZjdiZTRlYWQzZjhmOGRhODY2YzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM0MjE1MzdiODIzMTc5MDYxYmQzZDZjYmJlYjM2NDljYjYyZDRkMzE2OGI3ZGJhOTY4M2EwYzgzNzRkMzI3MjcifQ" + "resource": "repo://src/cli/commands.ts#L305-L402", + "version": "repo-lines-v1:sha256:8aff00a688411340ca44420ac6b27c74dfd4abf982605c5c2499bfb91113e8f2:eyJzZWxlY3RlZExpbmVDb3VudCI6OTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4MmJlMzI0Mjk5NWQyZjAyNTdlMDdhOWZjODNkOTBkYTkyY2ZkNjg4YjE5OWNlYmUxOGIyMDRhOTFmYTQ0Y2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJlZWVmZGQ1MTEzZDk5MDU2ZjFlMTlkZTFiN2Q1YmVkZTZlMGEzMDFmOWU4ZjdiZTRlYWQzZjhmOGRhODY2YzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM4ZWRkN2NkM2Q0ZWEwZGRhMWZkOWYxYzAwN2U4YjRmYWEzMjk0NmU0NzVkNmZhZDMzYmJjYzMzMTEzMGRhZjcifQ" }, { "resource": "repo://src/cli/runners.ts#L66-L91", @@ -421,7 +417,7 @@ "statement": "shouldPrintStartupError decides that a startup parse error is printed non-interactively (rather than shown in the UI) when print is requested, there is no TTY, or a run was explicitly asked to start.", "evidence": [ { - "resource": "repo://src/cli/cli.tsx#L95-L97", + "resource": "repo://src/cli/cli.tsx#L90-L92", "version": "repo-lines-v1:sha256:55731248c0008baf992e458525867be21423615841ad9f0fe7314f70e6049612:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjE0NWY1NjU0NDE0MDBmZjJiZTI2YTgyMGRhYjdiZjVmMzhkMmEzZTg1ZjRhNTVmNmRhOWY2NzA1YTI3YjJhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjdkMGY2N2UxNjg3ZWMxNDhkNTMxZmM1ZDkxNjMyZjQ4ZmVlNjZkZDM5NTBiNmI2MWM3ODM0ZTZkOWY0OWY3NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDY4NzllZmRhMjJkZDFlOTExOWFiNjM4ZDUxYTk0ZGMwYzA3OTQ3ZDBjY2IzNmVmZjJkYzIyNjJiZTBlYTAxYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzg0ZTExMTc4M2FlZDc0MzgwZTQzYmYwOGQwMjNiYmVhYzU0NjBkNDkwM2Q1YjQwYzY4NDg4MDYzZTAyOTk1MSJ9" }, { @@ -439,8 +435,8 @@ "version": "repo-lines-v1:sha256:72dfa7ee4c246bc405279578ed20fe51400750d05458dadcb109a1301fb37f0c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkwYWI3ZDk2YjAzNWY2YjhjZWRlMGJhZWUwYjRmOGIxMGI3Njk2MjQxNmNhOWQ0OTU2ZmY0YjQwMDVlM2M5YTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4YzI1YmIxYjQ2YTQ4ODlmNGZmOGY5Y2EwNzA0NGUzNTI2YTgxYzAzNzU4ZDEwYjQ2OTQwODVkNzU0NWFkNDAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgwNWQ0ZDA3YjNiMTFhY2JiMTE3YTQwNzg1YjBmMWFkMThhYWY4OTQzYTFhMmNmNzZjNGE5MmYzNWJiODFlNTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJkNzYyNWEyN2E2NTQ5MjY2OGQ1MzY1ODBhMzBlN2RiODViNzQ0ZDBkNDA5NGVhYTY4YmUwMzMxY2JhODBkNjkifQ" }, { - "resource": "repo://src/cli/app/app.tsx#L427-L428", - "version": "repo-lines-v1:sha256:bd7700f1c52405f862b5110343c430f43b2b431ed638d491c307cfee63295372:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWRlYWFlN2EyNTMwMzM0YTc3YWNlMmIzZWQ1NjJlYjMyODVmNjRkMzllOWQ3NWVmYmFlM2Q5MDNlNTU2ZjQxYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2EyNWM4ODI4OGY5NzYxZTJlMTZkYTVjNmNkYTFjNTRkNGMyNzc2ZDZkZGQ2NzE2NWMxYWQ1MjhlYjVlMzFhZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjgzZTU4YjUxNDk2MzZjNGYzNmY0M2I0ZmIxN2M2ODYzOTZlZTI3ZGUxZjU1NmU0NmE3MzRhOTkwMzJiN2U4OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWQ5OWEwYzMyZDVkZTdjYTAzODI0MjIzY2NkNmFmMzFiNTdkZmQ3NTgwYmY5NTAzNjVlOTdhZWYzNWZiZjU0OCJ9" + "resource": "repo://src/cli/app/app.tsx#L426-L443", + "version": "repo-lines-v1:sha256:2a5379e707ae2007e4cc390139a3f6ab074ad5120303e32bf521bababeb95d40:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU5NjZmYmZhODg5OThkYTc0NjU2YzUwMTk0OTU2YzI1ZjA4NDk0NTc2NjBjMDA5ZmU2M2QxZTlmYTlkYzkzMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUzMGNhMWJiNmEyNDUwMDc0N2QyYWUwMjBkOWMwMzhhODk4NzJjOWMxZGI4MzYyNzExZDIwN2ZkOGM3YzAwMWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZmOTY5ZTIwYzRjYmRhZDE5ZmY2MDYxMDIxY2RlODE0ZDIyMzg1MTc3NDM1MTllMDc1M2Q5YWI0YjA5YmZhNDcifQ" }, { "resource": "repo://src/cli/run-mode.ts#L61-L68", @@ -450,7 +446,7 @@ } ], "verification": { - "by": "openwiki/0.3.3", - "at": "2026-08-25T02:14:25.283Z" + "by": "openwiki/0.4.3", + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/operations/configuration.json b/openwiki/.claims/operations/configuration.json index a5e8e6d2c..a195540ab 100644 --- a/openwiki/.claims/operations/configuration.json +++ b/openwiki/.claims/operations/configuration.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:be8435e051eb6053eb241c190be58890f208fbcebb0c437faee0828f0e1465f4", + "pageVersion": "sha256:71af366a9bce21906854f4b73c92143bf2fb8608f8c45ed74d18076c477cafe9", "claims": [ { "id": "claim_f6ee1be411cc44af8ce963e1af7842d1", @@ -27,7 +27,7 @@ "statement": "The persisted environment file lives at /.env (openWikiEnvPath), displayed to users as ~/.openwiki/.env, and openWikiEnvDir equals the resolved home directory.", "evidence": [ { - "resource": "repo://src/config/env.ts#L78-L79", + "resource": "repo://src/config/env.ts#L80-L81", "version": "repo-lines-v1:sha256:a2ffa84893c018b2aa12449c6459b02d00e466196c96449c3fd5d87af8809da7:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYThkYzE3NzY1OGY3ODIwNTg0ZTdjMjczZWI0ZmY2MDMzZTlkYTQ5YmEwZDI2YWQwMDA2MmM4MWRkYTBlYWQ3OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDUxZTM2OWFlM2ZkZGUyYWE4OWRjYjNlYTRhZTYwODkwN2NkOTkzNjkwY2EwZGVlNjRlMTk0MzhjNzcyYjAwYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTg2MmVkYzlkMjc0MDU0ZmY3NTExNWI5OGI4YjlkOGQyODI2M2U2YjQ1ZTY3NWIyMmZlZWQ2ZTAzZTIyMWM2OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTEzNzZhNGMwOWE3MTU0MmIxNmRiM2ExYzM3ZDc4MTRlZDNlMzg2ZGNhNTQyMTNkODVkZDQ0MTAxNGNlZjliNCJ9" }, { @@ -51,7 +51,7 @@ "statement": "The state directory is protected by restrictDirToCurrentUser on both directory creation (ensureOpenWikiHome) and env save (saveOpenWikiEnvLocked), applying the Windows ACL restriction alongside the 0o700 mode.", "evidence": [ { - "resource": "repo://src/config/env.ts#L335-L340", + "resource": "repo://src/config/env.ts#L338-L343", "version": "repo-lines-v1:sha256:78c461194a1f8ba74ba50d2a7176a7971904b35069b1af96f3fe000cd82d0647:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTExZDBmYWVhOTBlNmExMGY1MjkzMjlmNTA5NGI0YmFiOTVkM2NkOTZlOTczNTc3ODQ0YWY1NWMzOGU5ZmU0ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2FmZmI4ZjAxYTNmNjcyODhjMTVmYzIwZjM4MGNkMDg0NTJkYzEyYzU0NGEwN2ViMDNkOTQ1Y2RjYmQyNGIzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTdkODYzMmU1NGU5Mjk4YWJiOTU4NzI3ZTJkNTE0MDhhYmFmMTM2NjAzNTM3OTEwMTQwYWJmNjViMzBhYjYxMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmI0ZjM3ZDU2OTU5ODIxN2U0N2RjOTU3OTMxZjJhZDE4ODJlZTE2MzIyZmZkNWJkZDc2YTZjYzU1MGJmMWY5NSJ9" }, { @@ -62,11 +62,11 @@ }, { "id": "claim_c8ab56cdd3884818ab3dfeb904fbefdc", - "statement": "MANAGED_ENV_KEYS is the single source of truth for every env var OpenWiki reads or persists, in file-write order, and both CREDENTIAL_DIAGNOSTIC_ENV_KEYS and DEBUG_ENV_KEYS are derived from it by filtering so they cannot drift out of sync when a new managed key is added.", + "statement": "MANAGED_ENV_KEYS is the single source of truth for every env var OpenWiki reads or persists, in file-write order, and both CREDENTIAL_DIAGNOSTIC_ENV_KEYS and DEBUG_ENV_KEYS are derived from it by filtering so they cannot drift out of sync when a new managed key is added; it includes OPENWIKI_BEDROCK_MAX_TOKENS_ENV_KEY alongside the other Bedrock and provider keys.", "evidence": [ { - "resource": "repo://src/config/env.ts#L91-L194", - "version": "repo-lines-v1:sha256:77507c089ae50dd450cf94d2062df89586b82854c0e15ff9f53e82a93a51bae2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTA0LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJlYWYyMmNmMDczMjU5MmMyNDcxNDFjYmU2MWVmYTExMDEyNjEyZjVhMzEyMmI5YWY5YmJhZjUyZjU3MjRkMTk0IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJiMDJkMmMwZDZkYzVlNzRkOTJmYTE0YjkxZGJlYTI2NDA5MGJlYjM1ZmRiOTE4OGQ5YjM0MTE4MWRjZTlmNGNlIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiJmYjU5MTBhYTA1NjU4OGE3ZTA0YWVkYzA5MmM5YTlmOTg1YWQ4MTQ4YzcyZGZiM2E2MTAyOGRiZjMzMmFlYjA3IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIwZDI2ODRjZDcxYTA0YzA2ZDE0Y2NmMDM1ZjM1ZGQ1MDRjNzRjYWY3MTI3ZWYxYWYxYjc4NjkyN2JkNTFjNWY0In0" + "resource": "repo://src/config/env.ts#L91-L197", + "version": "repo-lines-v1:sha256:84ccf192f4140777f11ca1b81c0432d9edadfb6a0e1b0ccf5849239fa9a30c50:eyJzZWxlY3RlZExpbmVDb3VudCI6MTA3LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJhYTFkMWE2MzM5MDIyOWM3OTgzNDdlODNhMDQwNTQ0MWM5NDAwMDM1Mjg0YWQxNjhjMWJmNmNkZjFkNzBhMzcwIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJiMDJkMmMwZDZkYzVlNzRkOTJmYTE0YjkxZGJlYTI2NDA5MGJlYjM1ZmRiOTE4OGQ5YjM0MTE4MWRjZTlmNGNlIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiJjMDY0ODI0MGY4ZmZlYWVkMDdmYTcxMDNlODk3Y2FiZWM3MDBhNjdhZDM4NmEwMjI0YzMxM2QzZmUyY2FhNDIwIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIwZDI2ODRjZDcxYTA0YzA2ZDE0Y2NmMDM1ZjM1ZGQ1MDRjNzRjYWY3MTI3ZWYxYWYxYjc4NjkyN2JkNTFjNWY0In0" } ] }, @@ -75,7 +75,7 @@ "statement": "LangChain project/tracing settings (LANGCHAIN_PROJECT, LANGCHAIN_TRACING_V2) are managed but excluded from the credential diagnostics panel via NON_CREDENTIAL_ENV_KEYS.", "evidence": [ { - "resource": "repo://src/config/env.ts#L165-L184", + "resource": "repo://src/config/env.ts#L168-L187", "version": "repo-lines-v1:sha256:fc157244b2688ab47b19f848b01b778064df0ba3707dbd50595de81b2e63806f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjYzhhZTQyOTBhOGM5ODBhMmVjNzI0YmQ3MDM5NWZiODlmMDVjN2YxNmM2ZDM2YTk2NzFjZGE4ZjM1MTIzNzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMmQyYzBkNmRjNWU3NGQ5MmZhMTRiOTFkYmVhMjY0MDkwYmViMzVmZGI5MTg4ZDliMzQxMTgxZGNlOWY0Y2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQxZmNhMDM4YmZhNTdmYTk1MmNkYzA3N2MzZDcwZGUzNTRiYTdlMDg3YWYxMTQxYmY3MDFiODFlYjg1M2EzOGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhNzc0NDBkMGIyMjRhOGExOGE0Y2M1NzQ1ZGRjODMyNmRhYjk3NmY0ZjMyMzU3ZjhjODdmYTJiZWRiZDBhZWIifQ" } ] @@ -85,11 +85,11 @@ "statement": "loadOpenWikiEnv reads ~/.openwiki/.env and copies each value into process.env only when the key is not already set, so a shell export wins over the saved file at runtime; deprecated keys are skipped and a missing file yields an empty map.", "evidence": [ { - "resource": "repo://src/config/env.ts#L262-L282", + "resource": "repo://src/config/env.ts#L265-L285", "version": "repo-lines-v1:sha256:4ce3eee4b2e02fb6ee325498a6d091d09aad3b4d891c4c532d98ef7573c23bac:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZlZmEyMzE4YTllZjlmNjgwNjM2MzI4NTZmYjU2MzE3YWMzOTZjYTZjNDVhOWZmNjE5ZDkzNDE1OWY0NmRiYTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImIxODBlM2I3ODBkNjM0ZjI5ZjIwZTYxMmJmYmMwOTRhOGU3YWFmMWExNDhlNTgwNGM0ZDFlODU0ZmYxMTFjM2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEzYjg0NDliYjgwZmQxOTEyODJjNGQzM2NhMDljMjFlYTM1YzgyZDIxYjU2NDczM2RiNzhhYWU4ZTAzODlhZjgifQ" }, { - "resource": "repo://src/config/env.ts#L603-L613", + "resource": "repo://src/config/env.ts#L621-L631", "version": "repo-lines-v1:sha256:44dcb5a574895946389832c9a95a614721c03f597d251db9fb90a4cfeca3a241:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEyOGE4MjI5ZWI2OWNlMWU4ODcyMjlkNmU1ZDlkZmU0NjIyNDI0OTMxMjZhYTJmMjM1MDBjMTc0OWIzNTAxM2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1Zjk5MjBhZmQxMzBlMjhmZjBlZjM3MjcwMGE5ZTZlMmM3MTY4YzkyM2UxNTAwMzJhMTlkMjFhN2RjODA0ZWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFjODc0YzcxMWI3Y2EzYWY1Nzc3NDQ2ZTZlMmZhM2UzYzdmYjNlMjM4YmFmMmNiYjRhZDQyNDA1Mjc1Nzc4MDMifQ" } ] @@ -99,12 +99,12 @@ "statement": "OpenWiki keeps two in-memory startup snapshots — the shell's values for managed keys (captureShellEnv/getShellEnvValue, idempotent so the first call wins) and the saved file's values (savedEnvAtStartup/getSavedEnvValue) — both never persisted or logged, so the setup wizard can distinguish shell overrides from saved config.", "evidence": [ { - "resource": "repo://src/config/env.ts#L202-L260", + "resource": "repo://src/config/env.ts#L205-L263", "version": "repo-lines-v1:sha256:c484764ab963ab9f3fb9df79cd2a028d8bea8e4077740c9105df5b110281d75c:eyJzZWxlY3RlZExpbmVDb3VudCI6NTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNkMDY0MzY5NzdiNzUwYTQ2NTlhNjFjNTcxYjMyNTcyOTFiNTVmMGUyZTdkNDZkMGYxNjViMTJkZmE2MzBjOGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmYTIwMmYyNTA2N2EzNDYzODc2Mzk5ODJjNjUzNmFkNGYzY2Y0ZWVjNzk3NWE2NjM4MGJlNzE2OTUyOTE4N2EifQ" }, { - "resource": "repo://src/config/env.ts#L267-L269", - "version": "repo-lines-v1:sha256:578bf61eb506e558078a2a8856e85412bd89a6b6ace1bf5fcf8cb2c991b5d1ee:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjA0NDM0MTBlNjEwNTdhODAxOGQxYjQzMWViYThiMzI3NjlkMGYwYTNiYWUzNjY3MDU5ODUxOWZjMjZmNjhiNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTBkN2Y5OTk5Y2Q0YjMyMDZlZGY3MGYwNTYxM2FjNGIwM2FjM2ViODgwYTc1ZTBhMjEyNDA1NmFmYTU2Y2RlNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWIwNTQ1N2JhZGI0Y2RiOTQ0OTBjN2E2YjdlMzc1NzBjZGVjOTNlZmQwYTAwYmM4MmM2YzdkMmY5OWJkMGMyNCJ9" + "resource": "repo://src/config/env.ts#L266-L272", + "version": "repo-lines-v1:sha256:6b28d569aa1b7b1d582f6b124c6c73b4209ea28f81940581a5e66acf9e609eb7:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDg2NDVkYjI2M2FhMDE5NzQ2NmQ2NjE2M2M4ZGMyNmYwYzIxZTEwMDU1ZTNlZDJlNTFjMDQ5MTY2YzkzYzZlZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGM0Yzc4OWEwNjI5MGFhNzdlMzkyNGI1MTcyOTUwNmJjNGViMDA0YzFiNjNlODJlOWNkM2NmYTI0MGY3MjM1ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWIwNTQ1N2JhZGI0Y2RiOTQ0OTBjN2E2YjdlMzc1NzBjZGVjOTNlZmQwYTAwYmM4MmM2YzdkMmY5OWJkMGMyNCJ9" } ] }, @@ -113,7 +113,7 @@ "statement": "saveOpenWikiEnv serializes all writes through a promise queue so concurrent saves cannot interleave, and a rejected save is swallowed in the queue chain so it does not permanently block later saves while the caller still receives the original error.", "evidence": [ { - "resource": "repo://src/config/env.ts#L298-L311", + "resource": "repo://src/config/env.ts#L301-L314", "version": "repo-lines-v1:sha256:6964e1f6743444490299e30a5ca5453d7db93c5797d99b4bce01f5232fa78e6c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNiNzUxZDljMDg0ZGVkYzJkMGFiNDNmM2QzNWMxMmIwYzY1YjNlN2I3OGJmMzI4YzFmOGYxM2JlMDcxNmY1YWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY2OGIzYmU5NWZkMWY5MzcxNjg5ZTA0NWZkMGEyZjg3OWZlMWUzZTRiMDkyMzEyN2M2NDk3MWUwMjVjMzM3YjAifQ" } ] @@ -123,17 +123,17 @@ "statement": "saveOpenWikiEnvLocked writes the env file atomically by writing to a uniquely named temp file (mode 0o600) in the same directory and renaming it into place, avoiding the O_TRUNC data-loss window of a plain writeFile that could truncate ~/.openwiki/.env and lose saved tokens on a mid-write failure.", "evidence": [ { - "resource": "repo://src/config/env.ts#L342-L353", + "resource": "repo://src/config/env.ts#L345-L356", "version": "repo-lines-v1:sha256:bf89586e76611db81233b7eb3e4789b97995974c653e23338d10b309153b2f6a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUzM2VhNzUzYmU0Mzk5MjRkNmMyNDNkNTUwZWE2ZTU0YzIxNTZiMTBkZGFiMzMyYzNlNWRkMDVmOWNjNTc4ODAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2OGQwMWQwMmEyZGE3MjNhZjNkOGIzNTc4ZTU1NGIzY2U5NzJjMTJhMTNkNjhjYzlkOTA2OWJhZTIyYzcxOTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAxMjZlZTBmNGI5OWQxODI3MGU0YTY3ZTc3MTI5MWE3MGUxMzI0ZGM3Y2UzNzA2YTliZmFiNzM5YjI1MGZhZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUxNWRkNjU0YzU4ZTMyZjE0MjhhODhmZTk3MzA3MmRmOWQ4NGU5YTBjNjhkZmJlYWU0NTJhYjcwY2Q5MGIyMzQifQ" } ] }, { "id": "claim_c32885067b064c12a35961c9dd8d5c96", - "statement": "On save, keys with an empty value are dropped rather than persisted as KEY=\"\" (which would read back as configured), deprecated keys are removed, and process.env is updated to mirror the file except for keys whose value came from a shell export at startup, which are left untouched.", + "statement": "On save, keys with an empty value are dropped rather than persisted as KEY= (which would read back as configured), deprecated keys are removed, and process.env is updated to mirror the file except for keys whose value came from a shell export at startup, which are left untouched.", "evidence": [ { - "resource": "repo://src/config/env.ts#L313-L369", + "resource": "repo://src/config/env.ts#L316-L372", "version": "repo-lines-v1:sha256:fa35b4d645a170f7602cd05b8e2aec6c6105bedfb110ce0bf79be72feaa11f2b:eyJzZWxlY3RlZExpbmVDb3VudCI6NTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM1MzJmNjg5MWMxN2VkZjliYzAyYWFhN2Q3NjdkOWFjN2RhMmEyMGI1ODY5NzEwYjU3MjE4ZWFlOGYwY2JlY2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE4MTgxNjc0OGRhN2Y5OTM4N2MwYzI4Njk0OTkyODcxMWFhMDFlMjRjMTI1YTE4MGEyNTk2N2YwZWE5OGI5ODAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg4MWI0Zjg0OWNmMWE4ZDgxZDFmMzAzMjMyODcxNThiNGMyNjZiZjg0ZGM5ZTk3MDA3ZjU2YjA5NjU2NzJlNWIifQ" } ] @@ -143,7 +143,7 @@ "statement": "formatEnv writes managed keys first in MANAGED_ENV_KEYS order followed by other keys sorted alphabetically, always double-quoting and escaping values; parseEnv reads them back, ignoring blanks and # comments, accepting an optional export prefix, requiring UPPER_SNAKE_CASE keys, and unescaping quoted values.", "evidence": [ { - "resource": "repo://src/config/env.ts#L615-L680", + "resource": "repo://src/config/env.ts#L633-L698", "version": "repo-lines-v1:sha256:4b6407d1354987b31d2e7b3593751ebfe6e77e2e8975d9b4daf2f0c062988c76:eyJzZWxlY3RlZExpbmVDb3VudCI6NjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4YTMzMjIxNDI0ZmQzOThiZTU3Y2YwNDc3YWNiM2NhZGI0MTJhZWY5MzNiYWQ1YWMwYjI2ZTgxMzYyZmQyZjkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiNTgwZTk2NGY4M2E0NzNmNDNkNDQzODQ2Mjk0OWQ2OGI1NjAwZmRhNzg3ZjE2Mzc0NWQwMGRlODljYmYzNmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" } ] @@ -153,50 +153,54 @@ "statement": "When OPENWIKI_PROVIDER is unset, resolveConfiguredProvider infers the provider from whichever credential env var is present in a fixed check order and falls back to DEFAULT_PROVIDER (openai).", "evidence": [ { - "resource": "repo://src/config/constants.ts#L819-L851", - "version": "repo-lines-v1:sha256:ca82aaa4beb3360ddd9733313caf40608f675311ba0e811d6db7cac2cc9b51df:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4YTAxMWI2NWI1YTk2MzBmZTU5YmU0MDU0MjM0ZmFiZmM5MTA4NTBmMWNmNWRmOWJlNTJlNGE4NzViN2JkZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY4MTJjMzg1NDEwYWMyMDA0Mzc4MDZhNDY5YjMzZGI5MTUzZDEyNDc2NGZkN2ZjYzU0YWMwZjQ0YWRkZTQ0NGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhODcxNjg3YTI4YTlkYTdkNzUxYzdiYjE4ZWRkZjExNGY1MGM5Y2E4ZmMxZDM3YWIzYjc3ZGQwYTk5MDdkYWUifQ" + "resource": "repo://src/config/constants.ts#L103-L103", + "version": "repo-lines-v1:sha256:6e24dd433647f55f39004d4399349b92c931bc08c09d355bc02b73d7bb92aa47:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUyNGRkNDMzNjQ3ZjU1ZjM5MDA0ZDQzOTkzNDliOTJjOTMxYmMwOGMwOWQzNTViYzAyYjczZDdiYjkyYWE0NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUyNGRkNDMzNjQ3ZjU1ZjM5MDA0ZDQzOTkzNDliOTJjOTMxYmMwOGMwOWQzNTViYzAyYjczZDdiYjkyYWE0NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2ViNGQ4ZTg3OTU1YWE4MzM0MWFhZmZiZTYyNjQ3OTRkY2M5NTI0MzNhODNmNzE2N2ZhNWQ5ZTJmMzUxNzZjYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTc3M2M0N2Q1N2RkZjNiMDNlOTZjNDVkODdkYmIzZmEzOTI4ZGFkNTgwMzg1MWQ3MWJiMTRlZTFkZjFiNmM0YiJ9" }, { - "resource": "repo://src/config/constants.ts#L99-L99", - "version": "repo-lines-v1:sha256:6e24dd433647f55f39004d4399349b92c931bc08c09d355bc02b73d7bb92aa47:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUyNGRkNDMzNjQ3ZjU1ZjM5MDA0ZDQzOTkzNDliOTJjOTMxYmMwOGMwOWQzNTViYzAyYjczZDdiYjkyYWE0NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUyNGRkNDMzNjQ3ZjU1ZjM5MDA0ZDQzOTkzNDliOTJjOTMxYmMwOGMwOWQzNTViYzAyYjczZDdiYjkyYWE0NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2ViNGQ4ZTg3OTU1YWE4MzM0MWFhZmZiZTYyNjQ3OTRkY2M5NTI0MzNhODNmNzE2N2ZhNWQ5ZTJmMzUxNzZjYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTc3M2M0N2Q1N2RkZjNiMDNlOTZjNDVkODdkYmIzZmEzOTI4ZGFkNTgwMzg1MWQ3MWJiMTRlZTFkZjFiNmM0YiJ9" + "resource": "repo://src/config/constants.ts#L834-L866", + "version": "repo-lines-v1:sha256:ca82aaa4beb3360ddd9733313caf40608f675311ba0e811d6db7cac2cc9b51df:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4YTAxMWI2NWI1YTk2MzBmZTU5YmU0MDU0MjM0ZmFiZmM5MTA4NTBmMWNmNWRmOWJlNTJlNGE4NzViN2JkZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY4MTJjMzg1NDEwYWMyMDA0Mzc4MDZhNDY5YjMzZGI5MTUzZDEyNDc2NGZkN2ZjYzU0YWMwZjQ0YWRkZTQ0NGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhODcxNjg3YTI4YTlkYTdkNzUxYzdiYjE4ZWRkZjExNGY1MGM5Y2E4ZmMxZDM3YWIzYjc3ZGQwYTk5MDdkYWUifQ" } ] }, { "id": "claim_8a1b8fcab2d64f6e9fcad26134f21ebe", - "statement": "OPENWIKI_MAX_OUTPUT_TOKENS is the provider-neutral output-token cap parsed as a positive safe integer, while OPENWIKI_OPENROUTER_MAX_TOKENS is a legacy OpenRouter-specific cap; resolveConfiguredMaxOutputTokens prefers the legacy setting on OpenRouter runs when set and otherwise uses the neutral one.", + "statement": "resolveConfiguredMaxOutputTokens resolves the per-request output-token cap in precedence: OPENWIKI_MAX_OUTPUT_TOKENS (provider-neutral, positive safe integer) wins when set; otherwise the OpenRouter legacy OPENWIKI_OPENROUTER_MAX_TOKENS takes precedence on openrouter runs, and on bedrock the OPENWIKI_BEDROCK_MAX_TOKENS default (16000 via BEDROCK_DEFAULT_MAX_TOKENS) applies; otherwise the cap is undefined.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L1074-L1107", - "version": "repo-lines-v1:sha256:f7b116fef61514fcc1f243355dcd09a65c1711aff4a5900c51a14061aca37ace:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBjMjk0OWQ5NDgwY2ZiY2I0MTRiNmY3YWE5ZTc4NDI3OGQzZDJmM2U1NzY4OTVjYjU4ZmM2NTcwMmFlNDQ5MGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVlZmRkYmZkMjBkZjBkNzg5ZTAwYTY1MDY4MDgxZjY1MzRiMmFhZGVkZmIxYjQxODU3NWY5ZGNjMmUyOGYxZGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyNzA2OWRkN2IyNmMxOWU1MmNjZjM2ZDg3OTFkZWFhZGIxMTFjNmZkZTgyMWVkNmNhYmYyMTljYjQxZWIzYTgifQ" + "resource": "repo://src/config/constants.ts#L1089-L1096", + "version": "repo-lines-v1:sha256:6939ea1c19bffcc2ab2a0e84901842ae565e65c1243b664a2341b62914aad480:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGMyOTQ5ZDk0ODBjZmJjYjQxNGI2ZjdhYTllNzg0Mjc4ZDNkMmYzZTU3Njg5NWNiNThmYzY1NzAyYWU0NDkwYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWVmZGRiZmQyMGRmMGQ3ODllMDBhNjUwNjgwODFmNjUzNGIyYWFkZWRmYjFiNDE4NTc1ZjlkY2MyZTI4ZjFkZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzZhZmQ4MjBiNDc2MGYyZmE2MGVjOTg5MzI5MzMxZTRjY2E5YzAwYjRmMWNjOWQyMDdjZTdmZDc3OWZlZWMwOSJ9" + }, + { + "resource": "repo://src/config/constants.ts#L1110-L1132", + "version": "repo-lines-v1:sha256:9d9501c2cb2541c19d42680f86001e5933c17cdd35752e2fddf092d1e2b3bfb1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyNWI2MzNiNjc2NmEyZmJjNDRmMmU2NDJjZWViOGNjMGUwY2M3YjVkOWVhNDRmZDNkOGI4Yzc3MmRmMDdjN2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUwNzVjNzA0OTdhZTI1YmIxODYzN2Q2YzYwNGJmZGIzZTg0YzM0N2FiZmZlMTU0YWNkNDNmMGMyZGQ5MzViNzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyNzA2OWRkN2IyNmMxOWU1MmNjZjM2ZDg3OTFkZWFhZGIxMTFjNmZkZTgyMWVkNmNhYmYyMTljYjQxZWIzYTgifQ" }, { - "resource": "repo://src/config/constants.ts#L893-L919", - "version": "repo-lines-v1:sha256:6805188db43cc280400c6e29c4c5f54d0191f75d79b16c059898a9f853dee53a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViZDlhMzVjNzU4Y2YyZTJmZGY3YWY2OGY1NmE2ZGNkZmVkNTQ1NDJkNzdhODBmOTQ3MDBlMmY0MjNkMjM0NzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVmOTFmODE5ZTU4NTNiM2U4NTQyMTc2ODYzZTRlZjdhYzExMmE4YzljMWNkZjFkNjk1OGQ5MmNhMGU1NjY4N2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFhOGU3MDY3ZDZjMGQ2YjA4ZjFkZGI4ZWRiM2Y2ZjE4ZTA4MDBmYTU1NjJlYjc1ZTA4OGJkNzlkNDViZjZiZDcifQ" + "resource": "repo://src/config/constants.ts#L1172-L1198", + "version": "repo-lines-v1:sha256:9156fd023231cd7534c629dc10def0e167eb31ef6fda3ac8ab8aab34d52a808a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYxZDRiMzFlNGNiMTg1ZTA4M2Q5NTQyMjFhYTcxNjZmYTM4YWNmZmUxNTBlMGM1MzAxNzAyMzgwMjkxNWI1YTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJlZDE2MzZjZmVhZGZhMzlmMTZjOTAzNzQwNjg4NDY0ZjFlMWM0YzViMWNlMzBkNGJkMWI0ZTk4NmU1NmRjYmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFjOTg4MGYyYTVmZjQyYjA2MTA5NWIyNmRmYTI1MGRlMDEwYWRkMzY3Y2FjMzFmNjlkZGExYzUwNmY5MGMxM2IifQ" } ] }, { "id": "claim_f79cc2eab01a4cd282787ef34fffcbf4", - "statement": "The openai-compatible provider exposes two independent boolean toggles (true only when the value trims to \"true\"): OPENWIKI_OPENAI_COMPATIBLE_USE_RESPONSES_API routes through the Responses API, and OPENWIKI_OPENAI_COMPATIBLE_STREAMING forces the SSE streaming HTTP transport for gateways that only serve streaming.", + "statement": "The openai-compatible provider exposes two independent boolean toggles (true only when the value trims to true): OPENWIKI_OPENAI_COMPATIBLE_USE_RESPONSES_API routes through the Responses API, and OPENWIKI_OPENAI_COMPATIBLE_STREAMING forces the SSE streaming HTTP transport for gateways that only serve streaming.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L1005-L1056", + "resource": "repo://src/config/constants.ts#L1020-L1071", "version": "repo-lines-v1:sha256:ab6aece9b5d1aec4d8595afe8ad522759727723186a5f9878ca25b789df2cb09:eyJzZWxlY3RlZExpbmVDb3VudCI6NTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkYmNmODAwZmY3OWJkNDRmMGJkZjA1M2FhOTBhNDI3YWIxMzRlYmU5Mzk2ZmU1YmEyYjEwMjc2YWMwYTVjOTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMwNWNlZjVkYTQzOThhMWJmOTFlNGQ3ZDRkZWQwZjdiMDQ4MjZlNGNlNWU4YjA0Zjc1OTMwMmIyN2E3OWE3MWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ0ODA4OGNkMTU3ZDUwMGRiOTk1NDQ4NTY2OTE3YzM1ZjI3NDY3YzRlY2I0OWIwN2RkY2ViZjE3ZjViMGU2MGIifQ" } ] }, { "id": "claim_27d0e95554d14cd493d54b59594ae95b", - "statement": "OPENWIKI_OPENAI_COMPATIBLE_STREAM_MESSAGES is a distinct axis from the streaming HTTP transport: it controls how LangGraph surfaces a run in the TUI (the \"messages\" stream mode) rather than whether the request is sent as SSE.", + "statement": "OPENWIKI_OPENAI_COMPATIBLE_STREAM_MESSAGES is a distinct axis from the streaming HTTP transport: it controls how LangGraph surfaces a run in the TUI (the messages stream mode) rather than whether the request is sent as SSE.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L1014-L1033", + "resource": "repo://src/config/constants.ts#L1029-L1048", "version": "repo-lines-v1:sha256:7ee90b9761ea57358c9816896505bfa341d8736ad0175e30c7acc61c15680292:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE2NjVjNThjNWZhMzY5NWE4ZTFlZWM2ZTVjYjYxZDE2ZTFhN2FkZjVmYjBhM2I1MjhjZTc5YzY1NTY3Nzc5NGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFiMmI5OWRjMWNkMzYwNjczMmUzM2E1ODcwNjIwNmU4ZmVhNTJhMjg4Y2E2NDViNTE0MDU0MjljMDMyMGQ2YzkifQ" }, { - "resource": "repo://src/config/constants.ts#L1035-L1056", - "version": "repo-lines-v1:sha256:847c27d3179c9878da589161d41bed5f96e7ae22e06f7fb5a27806acef3c0f81:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5MWQzNmVhYmRiYzBjY2I1OTNjMGE0MjRhMDk1YmIxZGIwZTU2OTkwYWMzNGUwOTJiZjg2YzYxMWRiMzdjMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ0ODA4OGNkMTU3ZDUwMGRiOTk1NDQ4NTY2OTE3YzM1ZjI3NDY3YzRlY2I0OWIwN2RkY2ViZjE3ZjViMGU2MGIifQ" + "resource": "repo://src/config/constants.ts#L1050-L1064", + "version": "repo-lines-v1:sha256:1789c3fb8556f3904cf62d8de8c6391c7eecb2efda5df488c83f492d612712b2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5MWQzNmVhYmRiYzBjY2I1OTNjMGE0MjRhMDk1YmIxZGIwZTU2OTkwYWMzNGUwOTJiZjg2YzYxMWRiMzdjMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUxM2RkZTZjMmM3ZWZiYjJhMjU5MzkxNjczZTJiZWYyMjFjNTk5NzhjOWZiYTQ4OWVmMGY1M2I0OTljN2IwYTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkODFhOTJhMWEwZTc3M2FjMzk1ODA2ZGFlYjgzZmVmMTAxNjE1MTY1ZDk4MGIyZmU1MTFlNTA4OGYzNTIwYzMifQ" } ] }, @@ -205,11 +209,11 @@ "statement": "OPENWIKI_STREAM_IDLE_TIMEOUT sets the milliseconds to wait for the first or next Bedrock stream chunk and is applied only to the bedrock provider by resolveStreamIdleTimeoutForProvider, with 0 disabling the stream watchdog so stalled streams may hang indefinitely.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L921-L958", + "resource": "repo://src/config/constants.ts#L936-L973", "version": "repo-lines-v1:sha256:410f3c4191614997751e0ef334e9ca5781ddc569e9293ad56bee3b76061e9e8d:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFkNDc3MmVkMjY2NmQ2ZWEwZGFkNTlkYTZmNjM1YWNmMDM0MTVhYTczNWRiMWJjODYwOWJiZjkwMTY0ZGU3NjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY0Mjg1OTc1NTcwOGQ4ZGE4ZGI2Y2Q5MzMyMzEzZDdlOWY1M2IwZTVhMzRlNjYyZGM3MjhiZGYxNzQwNmE0NjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM3MzM1NjM0ODFjOWMzZjdmNjdiZGVkZDMwYzRmMzcxNjcwOWMzMDhjNmVmZTFkNzAzYmY5ODFjZTU1ZWRiODkifQ" }, { - "resource": "repo://src/config/env.ts#L578-L597", + "resource": "repo://src/config/env.ts#L596-L615", "version": "repo-lines-v1:sha256:161581db8cad7f6e8b1e5a4cd061cdd8c49733e06312e58bb161f7c977027e88:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFiYzU0ZGUyYTU1ZTgxNmQ0OWUxN2NkYTE1YjAyNzM1MDBjYjE3MDNhMzk4ODU1ZTA0MmUwYWQ2MDQwMDA5MmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiNTgwZTk2NGY4M2E0NzNmNDNkNDQzODQ2Mjk0OWQ2OGI1NjAwZmRhNzg3ZjE2Mzc0NWQwMGRlODljYmYzNmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEwOTdhMmQ0ZjQ3NTc3MTgzOTRhNmY5ZmNjZTNkYTJlZThiNjlhMWJlYzQ5ZDRkN2NlNzE4MTY2ODEzMmQ3ODkifQ" } ] @@ -219,11 +223,11 @@ "statement": "OPENWIKI_PROVIDER_RETRY_ATTEMPTS sets provider retry attempts as a positive integer, defaulting to DEFAULT_PROVIDER_RETRY_ATTEMPTS (3) when unset.", "evidence": [ { - "resource": "repo://src/config/constants.ts#L68-L68", + "resource": "repo://src/config/constants.ts#L72-L72", "version": "repo-lines-v1:sha256:683a2888b2383076362a2611cb2435e448b33ade9c9ae4f279a4df49a9a54a45:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjgzYTI4ODhiMjM4MzA3NjM2MmEyNjExY2IyNDM1ZTQ0OGIzM2FkZTljOWFlNGYyNzlhNGRmNDlhOWE1NGE0NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjgzYTI4ODhiMjM4MzA3NjM2MmEyNjExY2IyNDM1ZTQ0OGIzM2FkZTljOWFlNGYyNzlhNGRmNDlhOWE1NGE0NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTRhMjI5ZGY4NTkwNDcwN2U3MGMwZDY2N2ExNDM1ODBiNjg3ZjNiOThlNzg5YTM2N2I4ZmRjYTEzMzVhYTE3MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGQ0OGEwYTc0NGJmNjAxZmZkMjQyZTNmNmViMzFjMjQ4MjFhZjQxNjE4MTFmMDVmYWJhNmE1MmU0OWExODIwNSJ9" }, { - "resource": "repo://src/config/constants.ts#L960-L986", + "resource": "repo://src/config/constants.ts#L975-L1001", "version": "repo-lines-v1:sha256:bce0e5ba23b0acb60bd7fb7dc795a03eb9604a7f3d31908bacbccd7ca079d506:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2YWZmMjcwNTU4ODk2OTc5ZWI5MmY4ZTg3ZGM2OTc5ZTE4NDZlOGNhOWQ5YWM2MDgwZmZkZDhiMmQ4YTdmZDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUwMDUzZTQyNDkzZWE1ZDZlM2ExNzNkYTllMDNhMTg4ZTE5ODhmMzc4YWQ0ODE1M2FkNjE0NTNkNzNjZTI1NmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxZDY3NTFhODI1OTBkNzk5ZDU4MGYyMGY0MDJjMjdmMTQ2OThhMjk1OWY0NmJlNWM0YWU4NmRmOGFlZjg4NGEifQ" } ] @@ -240,15 +244,19 @@ }, { "id": "claim_b199ff634c134a8dbf6c31d18f832bac", - "statement": "getCredentialDiagnostics builds one diagnostic per key reporting its source (process.env, the env file, process.env over the file, or unset), a masked preview for secrets (verbatim for non-secret settings), and per-key validation warnings such as invalid provider, model, token limits, boolean, reasoning effort, or a disabled Bedrock stream watchdog.", + "statement": "getCredentialDiagnostics builds one diagnostic per key reporting its source (process.env, the env file, process.env over the file, or unset), a masked preview for secrets (verbatim for non-secret settings including OPENWIKI_BEDROCK_MAX_TOKENS), and per-key validation warnings through a dedicated validator per key (invalid provider, model, token limits, boolean, reasoning effort, retry attempts, stream idle timeout, base-URL mismatch, or credential formatting, plus a disabled-Bedrock-watchdog warning when the idle timeout is 0).", "evidence": [ { - "resource": "repo://src/config/env.ts#L284-L296", + "resource": "repo://src/config/env.ts#L287-L299", "version": "repo-lines-v1:sha256:acd9eb08daf4ccd61b4fb6e7b4451e256a641525d30cfff6c779086213780624:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjOTQ1ZDRhMjBlMjMwNWQ4MzcyNDBlNzM2M2FkZjFkNTJlYjk1Y2M4NzRkNTUwNjIwNTY5MTU4ODg4MGI3MzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg2NDdmNWZhMWJiZWJjMDYzNDJjNDM0ZDQzYzYwMTIwMDg2Mjk1ZWU0YWVhODYwYTlkZTM4YjJmNjU5YWIxZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQyOWMwYjIxZTA5OTYwMjM5NDQ4YmM2MjhiYjEzNTA5NTY4Y2UzMDA3MjQ3ZjYwMDVkNzA4NDk2MWU1ZDhmMTQifQ" }, { - "resource": "repo://src/config/env.ts#L372-L504", - "version": "repo-lines-v1:sha256:921a434d319d75f77e8512456837293f57ac211ad93034a31f8748ec76892c02:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMzLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI2ODFkM2ZkZWUzNDZkZGJlZWQ1MGQ4ZDY4NDQ0YTE1ZWUzZmY0NmJmZjM0NDNmNDM2NWUxNmJhOGNlYTU5NGVhIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI0MTJjYTM0NWNjZjc1YmY5YzA4MDZiY2U2OTViZThkZTgwOGI3OTk4NDI1MWE3YTU0ZDIwMmNmNjEwMWRkNDUxIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiJmYjU4MGU5NjRmODNhNDczZjQzZDQ0Mzg0NjI5NDlkNjhiNTYwMGZkYTc4N2YxNjM3NDVkMDBkZTg5Y2JmMzZhIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJiNjI0MmIzZDMxZDE5OTJiMzk2ODAzMWVmYzk0NTg2MTNjYTU3YjYxZTJjYTNjZTgyM2M4MGU0ODk5YzlkZDNmIn0" + "resource": "repo://src/config/env.ts#L375-L424", + "version": "repo-lines-v1:sha256:c085a4bcc18eec396a0af0d971888f79e3b553597c20c2e6f84d48d141d7a7b4:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY4MWQzZmRlZTM0NmRkYmVlZDUwZDhkNjg0NDRhMTVlZTNmZjQ2YmZmMzQ0M2Y0MzY1ZTE2YmE4Y2VhNTk0ZWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQyYTJjYjI1YTEyMmI0NDIyMWE2MjM0ZWM2NjBhN2I1ZmI3ZjliZGU3YjNiOWUyYjNjNTU5YTBkOTZmYWM3MzkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiNTgwZTk2NGY4M2E0NzNmNDNkNDQzODQ2Mjk0OWQ2OGI1NjAwZmRhNzg3ZjE2Mzc0NWQwMGRlODljYmYzNmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlkMDM1NWUzZDNhNTU3MjdiNjNkODY5OWY1M2UwZDExYTBmMjUxN2NkNDJhMDRjYzAyNGQ3YjQ1NDkxNjFhYjEifQ" + }, + { + "resource": "repo://src/config/env.ts#L477-L502", + "version": "repo-lines-v1:sha256:36452ebad473451cbb5154f78852ae1e59f04b49da9ae289cb4ddaa6b4259aef:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg2NDI5ZmQxODY4MGYzZDE3ZWUzMWI3YjhkOTU4YTcxNDNjODFlNGYwZDg5MmJhNjFkNWE3MGQ1MjM1YTAwOTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2Yjg1ZGI4ZTI4YjI4ODZlMzExMmRjZDJhZjgzNzA5NjYzNjEwOWFkNjdkNzQyZDhlZDY5ZDg1MDVmM2JhYmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU0YWUxYzE4NTYzMDY5MWQ1Yjk1OTc5N2Q1YWJmZmE0MmIxN2FjNzg0MDhjOTE0OWJkNTI5ZmFmYjljNDBiNDQifQ" } ] }, @@ -261,8 +269,8 @@ "version": "repo-lines-v1:sha256:71f36f02b8accdffc5f226c4161d980a2433d86e73b764ed195deb474ff03088:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2NmYwYjFhZmUwMzUzZTdlYzM0ODVlNjZkYmEwMzlkMGNiY2RjYTZjMDIyMjA1NjU2NzQwNjdmMGE3ZDYxMDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmOWM1NDhjM2RmNDM2YmQ4MTRmMzAyODkxNGY5ZWVhM2ZkMjIyNjhhZDkzZTVmMGM0YWIyYWM4ZjVmNTRjN2MifQ" }, { - "resource": "repo://src/platform/diagnostics.ts#L22-L71", - "version": "repo-lines-v1:sha256:ebb179a5d999ae09c8bcfc211b53e701bb983152a47fdb0e5346f21444777487:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFmZTA3ZDg4NjIwZTYwN2JhZjczMWJkNjE4ZDU5ZDcxMTdlMmQwNmMxNjRjZGI1NDhlMDk2YWUxZjBjYzk0YTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkxOGVhOWRiYzhlMDdlZjZlMmEwNDY3MTY3OTY1YzJjMDVjYzJhZDk1YWFjZWRiYzVjMjcyNGM4MGNkNGRkNTIifQ" + "resource": "repo://src/platform/diagnostics.ts#L31-L71", + "version": "repo-lines-v1:sha256:e1332e25bb94126cf237c3f8846c0eaaa54016d950358e8a0166c8499867ad0c:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJkMDc5MTRmNWVlYjI0Mjc0NTI5NmU2ODIwM2RjMDkzOGY1Zjc0ODkwNzcwNDQ2MzYyNTMzZTk2OGNmZjBiMGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAwOGQyMzFkMDRiMmVhMzg0NThiMmYzZTY1NzIwYmVhNmM1NTU1MTczOGI3NzA4YWRlOTI4YjUzOTBmZWU4MTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkxOGVhOWRiYzhlMDdlZjZlMmEwNDY3MTY3OTY1YzJjMDVjYzJhZDk1YWFjZWRiYzVjMjcyNGM4MGNkNGRkNTIifQ" } ] }, @@ -275,10 +283,38 @@ "version": "repo-lines-v1:sha256:124ce026b7000ae2b3a4a6f20dd7e2af8f35a03c42adc081227e3f519fc7776b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5ZDQzZDRlODE3MzE4MGI0NzdmOGEzZDAxNTAzNzEwYWVmZmE4MjhiNTU5YjYyN2M4ZTAwYjBmNTU3MTM5MDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4NzdlZGFhMmJhZDAyNmRiNzA3NmRhNjE4ODEzNTRjY2M2MWE3MTkxOGFlZjA5NTkyNmJhOTI5NDE1NDMxNWQifQ" } ] + }, + { + "id": "claim_715c69afd6c74ac7a57c9b69d43d286c", + "statement": "resolveBedrockMaxTokens caps Bedrock Converse API output and defaults to BEDROCK_DEFAULT_MAX_TOKENS (16000) when OPENWIKI_BEDROCK_MAX_TOKENS is unset, because without an explicit maxTokens Bedrock caps output at 4096 and truncates long wiki pages; it throws on any non-positive-safe-integer value.", + "evidence": [ + { + "resource": "repo://src/config/constants.ts#L1167-L1198", + "version": "repo-lines-v1:sha256:09c26aa550be540a89881dba2576e54e8f07e07071e3458d948eef1ee500b527:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY2OGY0MmNmMjMzODEzZWQwY2NiYjkyNWNhNzBhY2M3NDA0OWM1Mzk4YTRjNzk4ZmJkMDIxMTQxMzhiM2QyNzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQyYTg2YjZhMWRlMWQzMmIxNzNkOWVmMzdlZjRhOGM2ZjZmY2VhZjVkNjY4NjM3MDgxZmUxYzg5NWFhN2FkNDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFjOTg4MGYyYTVmZjQyYjA2MTA5NWIyNmRmYTI1MGRlMDEwYWRkMzY3Y2FjMzFmNjlkZGExYzUwNmY5MGMxM2IifQ" + }, + { + "resource": "repo://src/config/constants.ts#L41-L41", + "version": "repo-lines-v1:sha256:13e92a0601d59918eb7fef5466d1f5d74a206e8f9adca79a12108cacde076942:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNlOTJhMDYwMWQ1OTkxOGViN2ZlZjU0NjZkMWY1ZDc0YTIwNmU4ZjlhZGNhNzlhMTIxMDhjYWNkZTA3Njk0MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNlOTJhMDYwMWQ1OTkxOGViN2ZlZjU0NjZkMWY1ZDc0YTIwNmU4ZjlhZGNhNzlhMTIxMDhjYWNkZTA3Njk0MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTM4OTEzNTA5NmMyNjBjYmEzZDQyMmYwYmY0OWY3NTcwN2MxNGQ2YzBjM2ZhNmU1MTM5OGU2M2NkOWUyYWVlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGE4N2Y0NzFhNGNlODY4NTIzYzU1YzMxZGYxMjE1MjZkY2I1YjFkZDM0OWFiYTEwNTVkNmFjZWI2YzIyNWYwYyJ9" + } + ] + }, + { + "id": "claim_9386754d3f29438a9b88d80ae500aaf3", + "statement": "OPENWIKI_BEDROCK_MAX_TOKENS is a non-secret diagnostic key whose value is shown verbatim and validated by its own getBedrockMaxTokensWarnings validator (calling resolveBedrockMaxTokens and reporting an invalid output token limit on failure), distinct from the neutral getMaxOutputTokensWarnings and the OpenRouter getOpenRouterMaxTokensWarnings validators.", + "evidence": [ + { + "resource": "repo://src/config/env.ts#L477-L502", + "version": "repo-lines-v1:sha256:36452ebad473451cbb5154f78852ae1e59f04b49da9ae289cb4ddaa6b4259aef:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg2NDI5ZmQxODY4MGYzZDE3ZWUzMWI3YjhkOTU4YTcxNDNjODFlNGYwZDg5MmJhNjFkNWE3MGQ1MjM1YTAwOTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2Yjg1ZGI4ZTI4YjI4ODZlMzExMmRjZDJhZjgzNzA5NjYzNjEwOWFkNjdkNzQyZDhlZDY5ZDg1MDVmM2JhYmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU0YWUxYzE4NTYzMDY5MWQ1Yjk1OTc5N2Q1YWJmZmE0MmIxN2FjNzg0MDhjOTE0OWJkNTI5ZmFmYjljNDBiNDQifQ" + }, + { + "resource": "repo://src/config/env.ts#L572-L594", + "version": "repo-lines-v1:sha256:a4e90c56c73250b7aa55e0ae713c36f79001de32ec0d83475b9b2f4d08ea2ac9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY3NzQwOTRjNDdmNTQyNGIwZmFjOTBiMmQzNDFkODI0YzhkNTJjYTUyNTU4MDdhYzM0M2E5NGYzZjc3NjRiMGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiNTgwZTk2NGY4M2E0NzNmNDNkNDQzODQ2Mjk0OWQ2OGI1NjAwZmRhNzg3ZjE2Mzc0NWQwMGRlODljYmYzNmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdiOTg5NDYxZTQ0MmRlZmM2MDVjOGZhODVjZDljYjdmYTNmODc2ZWQ2NmRkOTQzOGQzMjUyZDQ0ODUyYzU2MmYifQ" + } + ] } ], "verification": { - "by": "openwiki/0.3.3", - "at": "2026-08-25T02:14:25.283Z" + "by": "openwiki/0.4.3", + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/operations/telemetry.json b/openwiki/.claims/operations/telemetry.json index 9e626c0a4..605f760e6 100644 --- a/openwiki/.claims/operations/telemetry.json +++ b/openwiki/.claims/operations/telemetry.json @@ -1,10 +1,10 @@ { "schemaVersion": 1, - "pageVersion": "sha256:d9fec99a602b674accda34271a6c6d39ab9e7d18dc07d95c343cb772f5216f3a", + "pageVersion": "sha256:3c710a0d0e0e47caca6dacdf81c9c01ac447a897914bf66f560a9f5dca997b76", "claims": [ { "id": "claim_da05ca1b44a042d9ab9a5935194059af", - "statement": "OpenWiki telemetry is opt-out and emits exactly one PostHog event, TELEMETRY_RUN_EVENT (\"openwiki_run\"), per completed init or update run, carrying command/outcome/environment and (on failure) error classification.", + "statement": "OpenWiki telemetry is opt-out and emits exactly one PostHog event, TELEMETRY_RUN_EVENT (true) per completed init or update run, carrying command/outcome/environment and (on failure) error classification.", "evidence": [ { "resource": "repo://src/telemetry/config.ts#L26-L30", @@ -54,7 +54,7 @@ }, { "id": "claim_9e531c35bc0a4109addd693eb90336f6", - "statement": "Every event is stamped with production provenance derived from build origin (isProductionBuild, true only when running from dist/, not from NODE_ENV) and a build_channel that is \"official\" only for npm-published upstream builds, so real usage and official-release signal can be separated from dev/fork telemetry.", + "statement": "Every event is stamped with production provenance derived from build origin (isProductionBuild, true only when running from dist/, not from NODE_ENV) and a build_channel that is true only for npm-published upstream builds, so real usage and official-release signal can be separated from dev/fork telemetry.", "evidence": [ { "resource": "repo://src/telemetry/gates.ts#L1-L23", @@ -86,11 +86,19 @@ }, { "id": "claim_71aafdf65786476c9a8e06cc4d52dbec", - "statement": "firstRunNoticePending returns true only on the run that mints the install id (isNew), returns false and mints no id when opted out or in CI (noticeSuppressed), and never throws; the CLI calls it once at startup before any event is sent and renders single-sourced disclosure copy from config.ts.", + "statement": "firstRunNoticePending returns true only on the run that mints the install id (isNew), returns false and mints no id when opted out or in CI (noticeSuppressed), and never throws; the CLI calls it once at startup before any event is sent (only when commandEmitsTelemetry is true, i.e. a non-dry-run init or update) and renders single-sourced disclosure copy from config.ts as an Ink box (TUI) or framed stderr text (print).", "evidence": [ { - "resource": "repo://src/cli/cli.tsx#L72-L103", - "version": "repo-lines-v1:sha256:edd0bf0c5088e418c235581469f5d602b6ce3ffc3727292bb86815e46a33ea99:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3ZGVkNGE4ZWJjOTFjYzM0NTU0ZGJiMzVkYWQ2MGVkN2YyMThlMzZkOWFkMGRlM2IwMDBjYTRlYzJhOTFkOGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI1OTE3YmM5YTExM2E0Y2NhOGY4MTIxNTBmZmY1ZGRlOTc3NGE2NjA3NjBlMDAzMTliZGQyYjc3MDg0Mzc2NjMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImExZjI3NzA3YTcyMWNmMWY5NGQ2M2Q1ZWJhY2E4NGIxNmE5YmE5MTQxOGI1MWRjYjQ2NmE0ZDY0NjgwYWUwYzAifQ" + "resource": "repo://src/cli/cli.tsx#L72-L78", + "version": "repo-lines-v1:sha256:5cae9118e5501d7e02679a428079fec9ac8aa242cd865a817400bb213eecf357:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTdkZWQ0YThlYmM5MWNjMzQ1NTRkYmIzNWRhZDYwZWQ3ZjIxOGUzNmQ5YWQwZGUzYjAwMGNhNGVjMmE5MWQ4YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjU5MTdiYzlhMTEzYTRjY2E4ZjgxMjE1MGZmZjVkZGU5Nzc0YTY2MDc2MGUwMDMxOWJkZDJiNzcwODQzNzY2MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWQ5YzQ3ZjRiZTJmNmM0OTUzMDNmNTZhYmEzNjc3YjJhOWExM2Q2NzZhMWE1OTQ1OTk2ODk1ZmQ1MDM2NDNmNyJ9" + }, + { + "resource": "repo://src/cli/cli.tsx#L96-L105", + "version": "repo-lines-v1:sha256:621147ab37b29f405d95e6831ec20d72d01e730489f0819bbe1ef9b1d6e7617a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUwMGNhZmEwMDdhZmJlYmNkMDBhYTk1NDExMmJhOTM4NjI4MjA2YmJkNDgzNDZjMjcyNjg1ODJkZDY5YzNhM2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJmNTcyOGMwZmI3ZTIyNzY3NmE5MTM4YWM4MTRiNWMzNTllNmFkYThmY2ZkOTUzZWIwODI3NGMzODFlZGY5ZGYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc4NGUxMTE3ODNhZWQ3NDM4MGU0M2JmMDhkMDIzYmJlYWM1NDYwZDQ5MDNkNWI0MGM2ODQ4ODA2M2UwMjk5NTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY2ZWU0YTQxNDNhZTE4MGZkOGUwMTczY2M2NzI5MTZkM2M4OTgxNWVjYzkzZjMzMjExOTA1ZTczMjYzZDg1MDgifQ" + }, + { + "resource": "repo://src/cli/commands.ts#L1057-L1068", + "version": "repo-lines-v1:sha256:ef40ae736c21fc42dd47fca7086d383cd282fa41a9d04f94470cd03b1c814120:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5NGZjMGMxNzNkMWVjM2ZjNTAxZDdkZmE5Mjg1NTAxYzUyN2NmYjQ3MTI1ODNkYTNjYzM2MTgwNTY2YjRiZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFhZWViMGYwMmRkZDI0ZDA4NWFiNzI4NjM2Y2I3MWQwOGI1NGY4YTEyMGEzZGI1ZWVmZjNiZjMwZTY1OTAzYjcifQ" }, { "resource": "repo://src/telemetry/config.ts#L32-L41", @@ -202,7 +210,7 @@ }, { "id": "claim_5bba6cb3f5b144c48af342dbf864c646", - "statement": "The --telemetry-file tee writes the exact record to an unguessable owner-only (0o600) scratch sibling opened with flag \"wx\" (refusing to follow a pre-planted symlink) and atomically renames it into place, defeating symlink attacks and permission leakage in shared directories; a failed tee logs to stderr but never fails the run.", + "statement": "The --telemetry-file tee writes the exact record to an unguessable owner-only (0o600) scratch sibling opened with flag true (refusing to follow a pre-planted symlink) and atomically renames it into place, defeating symlink attacks and permission leakage in shared directories; a failed tee logs to stderr but never fails the run.", "evidence": [ { "resource": "repo://src/telemetry/senders.ts#L156-L165", @@ -396,7 +404,7 @@ } ], "verification": { - "by": "openwiki/0.3.3", - "at": "2026-08-25T02:14:25.283Z" + "by": "openwiki/0.4.3", + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/quickstart.json b/openwiki/.claims/quickstart.json index bd082bc91..ed8edf89b 100644 --- a/openwiki/.claims/quickstart.json +++ b/openwiki/.claims/quickstart.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:f52800159a11793bef52478fe78961343eede600f7afbec1be2c09186af09064", + "pageVersion": "sha256:d122c6ef870c68f073b10af91c59babccd494283e1269e539f4869dd020fcd84", "claims": [ { "id": "claim_5836585e22d244e79875961ea0a09258", @@ -32,15 +32,15 @@ }, { "id": "claim_46e85af3fff24bc8ba2321400c531c97", - "statement": "The process entrypoint `src/cli/cli.tsx` installs a crash guard before any run, parses argv into a command, routes `integrations` and `mcp` commands to the host-integration surface, and dispatches all other commands to the native pipeline that loads environment, resolves the startup command, and then prints a startup error, runs non-interactively (print mode), or renders the interactive Ink `App`.", + "statement": "The process entrypoint `src/cli/cli.tsx` installs a crash guard before any run, parses argv into a command, routes `integrations` and `mcp` commands to the host-integration surface, and dispatches all other commands to `runStandardCommand`, the native pipeline that loads environment, resolves the startup command, decides once whether this is the first run (mints the install id), and then prints a startup error, runs non-interactively (print mode), or renders the interactive Ink `App`.", "evidence": [ { "resource": "repo://src/cli/cli.tsx#L39-L53", "version": "repo-lines-v1:sha256:af68bb3a6800a0160efdc193ab101741f30da4937c4da79286027112ba202d17:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhmZDJhMjk2YjQ0NzRkMTg4MTcxMmU2MGZmMTdhNzBkMzI0N2U3N2M2YTE2MmI1YWFhNzZmYmU0ZjI5MDBkODEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY3NGEzNmM5OGQ5M2VkYWMzOTgyYWNjYTFiMzNmOGNmNTI2OTBkZjlkZDU5ZjNjNjE0NmNkMmM5ZDU5NWExMzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMWE0ZTQyZDY5OTBkNThiNmMxZGNmMTUxMWNlNjVhYTMzZDQ5YjQwN2Y4NjRjZDA2NzhjODliYTY1NWM1ODIifQ" }, { - "resource": "repo://src/cli/cli.tsx#L60-L115", - "version": "repo-lines-v1:sha256:1ede7137e57590a6084b1b695080a34231c69f6a5e224124cc2e27873cfda387:eyJzZWxlY3RlZExpbmVDb3VudCI6NTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGM4ODRkYjNiZjQwOTk4ODNmYjZhOTg0ZTgwZmM3OGU0YTcwZjE5MDQ1YzlmMmRkZjFlZjU0N2VkMjY3ZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMjUwZWQ5NDIwZjE2YTYyOTgzNzAxZWVjYmY0YzIwNmY4Y2MzY2ZhMGVjZGQ5NTQyYjY4MTJiYzg2ZDc5YTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEifQ" + "resource": "repo://src/cli/cli.tsx#L60-L110", + "version": "repo-lines-v1:sha256:ade304fda6a2c581bae7240b913feef716e695b113b4a7c6ed181c94781e61b2:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGM4ODRkYjNiZjQwOTk4ODNmYjZhOTg0ZTgwZmM3OGU0YTcwZjE5MDQ1YzlmMmRkZjFlZjU0N2VkMjY3ZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMjUwZWQ5NDIwZjE2YTYyOTgzNzAxZWVjYmY0YzIwNmY4Y2MzY2ZhMGVjZGQ5NTQyYjY4MTJiYzg2ZDc5YTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEifQ" } ] }, @@ -177,22 +177,40 @@ "statement": "An update is proven a strict no-op at `begin` time and skips model invocation only when the update no-op preflight says `shouldSkip`, Claims preflight reports zero issues, every existing page has complete baseline coverage in the page manifest, and the source fingerprint is stable across three successive snapshots taken while proving the no-op.", "evidence": [ { - "resource": "repo://src/agent/utils.ts#L109-L145", - "version": "repo-lines-v1:sha256:c5fec356e58b72b902b2d6fdff2ceada9bd99b55bf801e268cc4bd94330f85eb:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZjIyY2YwNzMyNTkyYzI0NzE0MWNiZTYxZWZhMTEwMTI2MTJmNWEzMTIyYjlhZjliYmFmNTJmNTcyNGQxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJiMTg3ZjdhN2Q5MDA0NmZhMzgwMjBkMmU5MTJjMjc0YTZlN2JjNDBlYmY2YmNhNTQ3YjQ3ZjFjNjBhMmNhZTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMxMTBlYThlNTEwZjFhNjQ3ODU0OWJlYWIxZWE3ZDNlOGZhNzIzMmM2OWRlZWViNjRhNGMzMTIxMjBmMjc0NDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVmZWI0M2I1Y2M2YjJmMTc5ODkyNzVjMDY0YTY2NzY1NTcxNjk2ZDk0NWIzZTIwNTYxZjc5NzVmZGM1ODFkMmUifQ" + "resource": "repo://src/agent/utils.ts#L126-L195", + "version": "repo-lines-v1:sha256:14afb3570ac29656ae9c8cb9a209c97f25a7a63057c73a5bb84f6d25b069d7b8:eyJzZWxlY3RlZExpbmVDb3VudCI6NzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzNmZlZjQwNjBkNTVjMDI4YWY0ODk1MTU1MmZhNDAwZjYwYWQyMDA5ODBkNjhjYTIxNzliYjBkZmE5YmZmNTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg3OGNjYjA0ZjQwZjQ3NmUzMzRkOTk5NzIyMmY4NjI5NmMzMTJlMDAxZDY2YWZmOTcxOWQzNmVjYzkwZTM4NWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVmMmY2ZGI0ZjIxNmFkMzFjMWYwYzI0ZWYwZWJmODU0MTY4NGY3ODY4ZTkwZjlmNzUxN2YyNjZjNzQ1NDI1ZDcifQ" }, { "resource": "repo://src/agent/utils.ts#L51-L69", "version": "repo-lines-v1:sha256:bb1c8d9d8315d0a027907d081bb4dd34082c35cc365b126db1420bdad1b2dece:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRjYTFhNWFlY2NiZDEyZmVlY2ZkYjY0ZDJmZDFmZTFjNGFlMjBiM2VmMjNiZGNiN2Q1ODM0MGRiMjExNjZjZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkOWUxMjU0NjQyNTU3NmQzZGVhZThjOWI5ZGJmMTI4ZDVkNmRkYWY1ZDdmZTg1NzkzNDkyN2RlZmZhM2I5ZGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU0MmIwYzdkYmYzZmQ3Yjc2YmMxYjNiNmQ5N2VhODFjZmQxNjY3ODI5MjFjODc1ZTUzMTFhZjRiM2UyZjljNmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgzNzFmMjE5MWU4NmYzNWI1ZTMwNGViMzI0YzM1N2IwYTkxZjFkYjUyYjg1Y2E3NGNlYWQ2ODljMGI1YmE3NTQifQ" }, { - "resource": "repo://src/generation/repository-run.ts#L398-L447", - "version": "repo-lines-v1:sha256:f599a0880bd34392c08795904032de04ef06d01c4dc2327dd0c48687d7a44e6a:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkOTkzYzcwNzZjNTVkMjhmOTQxZjZlYTI2ODk3NzM4MjdlY2JhODc3OTY5NGEzMzI5NGI5NzU0ZDhmMzA0YWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRkZjdlOWEyMDZmMzcwNGRhY2FkY2EwMmMyNTllYWZiYWQyMmExYjkxOWE2ZWUzM2IyMDc0M2U4ZGE2MDU1ZjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImViOWEyYzgyYTMxYWMzYWU3ZjQ3OWM5ZmViYTY3OGQxYjhkNjNhODM4NmJmMWI3MjY3MzRkMjZhZmQyN2RiYmIifQ" + "resource": "repo://src/generation/repository-run.ts#L398-L457", + "version": "repo-lines-v1:sha256:745a6d0cd73f77fe0039e569b799a290c42f8ffbc8f7f985beea39999225aaac:eyJzZWxlY3RlZExpbmVDb3VudCI6NjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNjczYWJkNDU3YTk3ZWVhMTdhNjAwNjJlYjBmYWVhNmJkZjA5NDg2OGNjNmI4ZjhjMGViZGEyZjYxZWQ0MmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliNjJmNjBkODU5MGE1NzljZjQ2ZjhkNjczNzhjNGM1NzJiOTYyY2VjY2RiOTBjN2E1ZjdiNDJiOTYwNzgyYTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVlMzllNDEyZWVmZGQyMGUxYWZkOGNlYmNmNjJhMzQwNDM2Zjc5NDAxYzkwYTRkNGRhYTBlM2NhMGQzZDkzZjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUwZGEyYzcwNDg0YzQ3ZjJlMzIzYzlhZmQ4NjFlYTY0YjU4MDJmZmU5MjhhZGRmZGQ2NTk4MWZlZjRlZDEyNDYifQ" + } + ] + }, + { + "id": "claim_0c11cd700d3f4e3194045b186f8cb376", + "statement": "An unrecognized `--language` value is rejected at parse time as a parse error rather than silently generating English: `parseCommand` classifies the flag with `resolveLanguage`, and on an `unrecognized` result returns an `error` command (exit code 1) with the user-facing message before any run work or persisted state is touched; the run-time helper `requireResolvedLanguage` treats an unrecognized value reaching it as a programming error and throws.", + "evidence": [ + { + "resource": "repo://src/cli/commands.ts#L967-L978", + "version": "repo-lines-v1:sha256:81d9204fe386dad2562b0b7f001b057f24d5b06d83f6ad0bc57485bc7f2e7c1d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4OTdhYzkxMTQ3OGUyYmNiNzAzOTVlNjE0ZGU1YjVlNTQzNmUwNmY5MTNlZTJjYjIwMWY4YjhiNmVkZDUyZTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYxNjEwMDgxNDZlZjczZTkyOGI4NjdmNGZlZGNkMzNiYmJmOTNiNzE2ZGU2OGE4ODE2ZmFiOTkxZTcwMzBmNDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI5NzIxZjA3YTcyNzA2NDgyZjY1MzA0N2Y4NzkzZGJkYzhmOWZjZWRiNjZiODNmMmJjOThkN2I1ZjQ3NjBjZmUifQ" + }, + { + "resource": "repo://src/platform/language.ts#L63-L75", + "version": "repo-lines-v1:sha256:686c7d1605ab0a2e6631fbce587449e241eba0afe2b00f48dbfa7b1912e73595:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMxZDBkNDU0ZTU3NDRiZGZmMTdmNTM3MDZmZDJmYWJjNzM4YTgxMTExNTBkNWUxZWJkNGU5NTQ3MTIyNDQ2ZmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY5NjRmNzQyZTJiYjY4YzM1OTRmYjRiODYzZDliMWY5YmQxZWZjMjZhMTYyYzliYTYwN2RhZjYyMGE4NjlhMTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxMmI3NWFlZWQ3ZDRlZmVjZTIxMTIyMmM1ZWJjOWMwNTBiN2ViNjdhODVmZGViMGI0NmQyYjU4OGQwZWU1ZTYifQ" + }, + { + "resource": "repo://src/platform/language.ts#L9-L12", + "version": "repo-lines-v1:sha256:53826e74ad07ada7f3d785f39f728852c33ab136aa787dc896fa89643c8bd518:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjAzZGE0MWNlMTVmMTdmN2FhYThhODM1OGRhZjNlOTEzZDI5YTUyZTNhZDNkNzJhNjY2MGMxMTExNTRjZDY2YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODgyMDdhNTBkMjllMjEyODg2NDcyMDAyMzViYTdjNzQ5NmI1YzgwZjVhYmE2OGVhMzYwMGJlZjk4YTc2NDlhZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTM5NzFjMmY0ZmM3MmIyMTJjODkxNmQyODM2MmJhMzg0ODcyYjljZGY5YTMyN2NkNjBmMTc5MTQ1N2RkZDJhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTVjMTk2YTg5YzgwZmNiZmRkNDk1ODlmYTAxZGRhOGU1ZGEzNzhjZjhjZTc5ZDNjMTg4M2I3NmM3MmRiOWJlZiJ9" } ] } ], "verification": { "by": "openwiki/0.4.3", - "at": "2026-08-28T03:39:43.412Z" + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/workflows/claims-reconciliation.json b/openwiki/.claims/workflows/claims-reconciliation.json index 48c2ac659..24efcb4f2 100644 --- a/openwiki/.claims/workflows/claims-reconciliation.json +++ b/openwiki/.claims/workflows/claims-reconciliation.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:ce6278a5885c2a2d1bb6cbe9f5f46c9c994edf29e6db4a56914f17dbef7772d0", + "pageVersion": "sha256:e953e42095598fb92140d60dcaeca620e516074aa9148f6a82a2418a8123056b", "claims": [ { "id": "claim_b4fc5fda11a9482d91f562eef48a86f6", @@ -56,11 +56,15 @@ }, { "id": "claim_8b89298a1a144e9380d2fd9d5251b969", - "statement": "getUpdateNoopStatus refuses to skip an update when there is no previous update git head, when the previous run was interrupted, when the requested output language differs from the persisted wiki language, when the working tree has meaningful changes, or when committed changes since the last update touch source outside openwiki/ and outside the openWikiIgnore boundary.", + "statement": "getUpdateNoopStatus refuses to skip an update when there is no previous update git head, when the previous run was interrupted, when the requested language's primary subtag differs from the persisted wiki language's primary subtag, when the working tree has meaningful changes, or when committed changes since the last update touch source outside openwiki/ and outside the openWikiIgnore boundary; it resolves the requested language via requireResolvedLanguage (a defensive boundary check that throws if an unrecognized value slipped past an entry point) before comparing primary subtags, and treats a primary-language-subtag change as meaningful rather than a skip.", "evidence": [ { - "resource": "repo://src/agent/utils.ts#L121-L190", - "version": "repo-lines-v1:sha256:040505be27a5d479b923909f3c2a6ee61f7f5d397e51cd93fdb47ad5f0672af5:eyJzZWxlY3RlZExpbmVDb3VudCI6NzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzNmZlZjQwNjBkNTVjMDI4YWY0ODk1MTU1MmZhNDAwZjYwYWQyMDA5ODBkNjhjYTIxNzliYjBkZmE5YmZmNTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg3OGNjYjA0ZjQwZjQ3NmUzMzRkOTk5NzIyMmY4NjI5NmMzMTJlMDAxZDY2YWZmOTcxOWQzNmVjYzkwZTM4NWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVmMmY2ZGI0ZjIxNmFkMzFjMWYwYzI0ZWYwZWJmODU0MTY4NGY3ODY4ZTkwZjlmNzUxN2YyNjZjNzQ1NDI1ZDcifQ" + "resource": "repo://src/agent/utils.ts#L126-L195", + "version": "repo-lines-v1:sha256:14afb3570ac29656ae9c8cb9a209c97f25a7a63057c73a5bb84f6d25b069d7b8:eyJzZWxlY3RlZExpbmVDb3VudCI6NzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzNmZlZjQwNjBkNTVjMDI4YWY0ODk1MTU1MmZhNDAwZjYwYWQyMDA5ODBkNjhjYTIxNzliYjBkZmE5YmZmNTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg3OGNjYjA0ZjQwZjQ3NmUzMzRkOTk5NzIyMmY4NjI5NmMzMTJlMDAxZDY2YWZmOTcxOWQzNmVjYzkwZTM4NWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVmMmY2ZGI0ZjIxNmFkMzFjMWYwYzI0ZWYwZWJmODU0MTY4NGY3ODY4ZTkwZjlmNzUxN2YyNjZjNzQ1NDI1ZDcifQ" + }, + { + "resource": "repo://src/platform/language.ts#L63-L92", + "version": "repo-lines-v1:sha256:08af016f2168baa6ebb697910b899232d17fc4139ac1e838c5b8a459de196b6c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMxZDBkNDU0ZTU3NDRiZGZmMTdmNTM3MDZmZDJmYWJjNzM4YTgxMTExNTBkNWUxZWJkNGU5NTQ3MTIyNDQ2ZmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY5NjRmNzQyZTJiYjY4YzM1OTRmYjRiODYzZDliMWY5YmQxZWZjMjZhMTYyYzliYTYwN2RhZjYyMGE4NjlhMTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" } ] }, @@ -289,6 +293,6 @@ ], "verification": { "by": "openwiki/0.4.3", - "at": "2026-08-28T03:39:43.412Z" + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/workflows/onboarding.json b/openwiki/.claims/workflows/onboarding.json index 72e20d84a..68cadd317 100644 --- a/openwiki/.claims/workflows/onboarding.json +++ b/openwiki/.claims/workflows/onboarding.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:af3ccdea8e494d703dc433f5a45a51f38d36c1b3e0f78a3971a5a3b9b7146be9", + "pageVersion": "sha256:c9d8c97931abfb3bd31cdb189c3b197993c0907ea670bf62939247a5c3d92b5d", "claims": [ { "id": "claim_019ff3d6f68b436e8dcedd62adaddc34", @@ -219,8 +219,8 @@ "version": "repo-lines-v1:sha256:9743270287998ae1c18d25c03788d6be89d1e15aed480ea98e8bea1f47391d41:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2I5NTkyNWUwNjcyNzIzNmMyY2UyNjVlMjA0NDdkNTdhNzU3MzM3Y2RmYmNmZmY3MmY1ZGFiNTAxZDRiOWI2ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTZiMDQ0OTE0Njk3MjJlODM2M2E5NGU0MDQ0NTM4ZTAxM2EyYTIxN2UzNmIxZTU2OGJhNjBhY2I3YjRjOGYyZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTE2NWNkMDg2MTE5YzhiYWI1NGJiNWUzOTU3YjlmYmI5ZjRkMTk3NGU4OTgzODA3OGIwZWZjMWI0ZWMzOWY0OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Y2YTJiZTljZGUzODIzOWJiOGUzYTJmOWNhY2NiNjY0NGIyZTJkNWYwY2Y0ZjRmNDMzNDg1NjIwNmRjYzVjMSJ9" }, { - "resource": "repo://src/generation/repository-run.ts#L252-L259", - "version": "repo-lines-v1:sha256:5d0a0fd2ede692f86efb2bdd70c381ff8535510144389679493fe78bd7f13670:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZjYTc0OWIwNWY4ZmJjYjlhZTRlZjkxYmJlZDZhZDE2MmRiYzk1ZmQyY2U3NGEzMmNlZmZiOTVmOTM0ZDdkMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTE2ZGVjODJhYmM4NjA5YmVlMDNmOTkwZTgwMThhMDA0YWI1MDM2MDFjMzJiNGFkZTI5ODA0MGY3YzRmNDNiYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDI3Zjk1MGJmNjRjNWQxNGQzY2Q5YmUzNDFjY2MzZWZkODRjY2MxMTI0MTg2MWI4MDEzZmU0MjQ5Y2JmMDI5ZSJ9" + "resource": "repo://src/generation/repository-run.ts#L334-L336", + "version": "repo-lines-v1:sha256:7139580478dfa8d0eaf197c59cd29eb61d1019dd49604b8425b99a7af85d37a0:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzU0YWNjMWM3YTI3YTM5ODQ5ZTAwNjdhM2ZmOTczNmY3MGQ3ZDY4N2Q4MjNhYjEwY2EwMWM0OTA5ZThkNmM4OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2EzZTQ2Zjk0Mjc2YjZmNmY0ZWQxZjAyYWY3OGJlZjZhMmVlMWM0MzlkZDU1ODRiOTczOTQ4MzEzMjE0ZDJiNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTY0NzA5Y2ZkMzQ1MTk1N2U5Nzc1NzM5M2RlNDljNWNlN2VlZDczYTIwYjc4NDg4NDMzNzI0MTcxZDQ0YjUwZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODMzZGRhNGIwMjRhYTdhMTFjMDY0MjZjZWQxMTEyOTBjYWI1NTYwODkwMDIwOTAxMWRmZmNiYjUxMGFhYzU2MSJ9" }, { "resource": "repo://src/ingestion/code-mode.ts#L50-L62", @@ -313,10 +313,24 @@ "version": "repo-lines-v1:sha256:7ca19f6cba1c305ee6e25a7600214fbc997a817b29d8999b0a12e6368be7c525:eyJzZWxlY3RlZExpbmVDb3VudCI6NTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNhOGI0MmRlYTQ1YWU1NTcwMTIyYzllMDQwMTY5NDliNTMwNmY3ODAwMWRkMmMzNGJmMTNiMWQwODU3NjBjMDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIyOWQ1MmJlM2JmZDVlNzg3MjU2ODQwZDc3N2I2Mzg0NWRkNGQ0NmMyYmMyNDdmZjM4NGZhY2JlMDQxOTM0NjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA0OWUwNDc3YTVmYmQ5OGFhYTE4ZDE5ZjliNDA4NDE0YzY4YjJiYTljMGIwYmQ2ODUwY2QzYzcwZjczYzc0Y2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM2ZWIzMWE3MDhmM2U3NmZiMWVhNjQ4NzE2ZTdkMTJlYjE5ZDhkYjBmZDIxOGRkNzU4MTM5YmU0MzA5OTMxNzEifQ" } ] + }, + { + "id": "claim_024be11797c3493291ad0e601c3131eb", + "statement": "beginRepositoryRun validates the requested --language value before touching the repository, rejecting an unrecognized BCP-47 tag (via resolveLanguage) rather than silently defaulting to English, because a wrong language would be persisted in durable run state and a later resume refuses to change a started run's language.", + "evidence": [ + { + "resource": "repo://src/generation/repository-run.ts#L323-L332", + "version": "repo-lines-v1:sha256:e71e280af789945c43573bd42734abfb16a9a67f3e459becb7696b1d6d5dcb11:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZkNjJkYWU4YTliYTI4MjRlNzBhMzFjZmQxODVlNTI5Y2ZjOTk4MmE2NDU2YTEwOWI4MTI2ZTBmYTVkMTE5ZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4YmIxNGZiNDYyNWViYjFiODRkODE0NTQzYTU2NGZhMDRiMWIzOGVhZTdjZmYxYjAzMDM4MGQ1NWQ5NDQxNjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2YmEzOGEzMTAwZjFmMThiMjZmNWZlODE2MDlhNjY5Y2ZkYWU5YWE4MDgxNjBmNWNjZGM4YmQ4YmNjMmY0ODgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAzOTgwN2E5OTJjYTU4ZWMxMWQxNGQxMDc3NGUzNjEzOGRiMWQ0ODU3Zjg5MTNiM2FmYjU4M2ZlM2QyNWJkYTkifQ" + }, + { + "resource": "repo://src/platform/language.ts#L25-L53", + "version": "repo-lines-v1:sha256:633d65cbdb437a58d2d3ba806f22b8b8a3c3123d30adef91159f6e8886d909d1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlODcwMTQzOGYwNDEzYTI0ZTY5YmMwYWI3N2U2NzU2ZGVhNDQ4M2IwN2JlZjU0ZGVjOTVkNTUyZjM4ODU3NDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk0N2ExYjkwYTQ0OWYzMGQ4MGRlMmY3NjJkZDJlOTEyNWUzNDRhMzQwOGFiMmQ5OWQzYjBkNTk0MGZhNjVkMTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE2NzgwZGU1NTA2MDU3MjA1ZGU0M2YxOTc0ZTE5NmFiNWRkZDNiOGJiZjFlZGFkMjg0NWFhYWE2NmM4YzEwZjUifQ" + } + ] } ], "verification": { "by": "openwiki/0.4.3", - "at": "2026-08-28T03:39:43.412Z" + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.claims/workflows/repository-generation.json b/openwiki/.claims/workflows/repository-generation.json index 95fa3c192..d4c7ba536 100644 --- a/openwiki/.claims/workflows/repository-generation.json +++ b/openwiki/.claims/workflows/repository-generation.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "pageVersion": "sha256:1c349a9ee3ccc623949d8b357b763e8bb8ccb12c0c54d56565db1bdeb678f65a", + "pageVersion": "sha256:7bc68508fbe8bd9914e5ac6ffc1c20cb0232e78a04c4100d9a8f6c49aba5d8de", "claims": [ { "id": "claim_6a07849de8a7454ab87fae516e7e2d8e", @@ -286,15 +286,15 @@ }, { "id": "claim_89878127a7554ac380ff6171a376d056", - "statement": "Resuming a run validates caller ownership: a mode mismatch or a requested language change each raise a conflict RepositoryRunError; a different producer actor is allowed and carried forward along with the caller's metadataModel and planning context.", + "statement": "Resuming a run validates caller ownership: a mode mismatch raises a conflict RepositoryRunError, and a requested language change is refused with conflict via requireResolvedLanguage comparing the resolved language against the checkpoint's state.language. A different producer actor is allowed and carried forward (not a conflict), along with the caller's metadataModel and planning context, so work can continue across producers.", "evidence": [ { - "resource": "repo://src/generation/repository-run.ts#L546-L560", - "version": "repo-lines-v1:sha256:41c85f591f5ca21e615d11d812dff97b39414968ee161693269139e669a87712:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwOTlhZmRkNjIwZGY1ZDY3Y2ZmOTU4MzRhZTQ2NDMzNDc1NmU1MTViZDYwMGM0YmJkMDk1MTQ1M2U1NDA5ZGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImIzOTgzN2M2ZjI3NGZhMDJmMDFiNDIzNmYzMzc5OTNjYTI4NjdiM2I5MzU4YzBiMDlkZjQ1Nzg2YWU0NTM5Y2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgyN2JkN2ZmZGQwNGJiYzczMGE4MDc2NDdmZDY3OGM4ZjJiOTg4MzFhODQ2ZGUyMmRkN2Q3MjM2MDhmYTM1NGMifQ" + "resource": "repo://src/generation/repository-run.ts#L553-L571", + "version": "repo-lines-v1:sha256:b03ecf1a6d6722cad86b23a8d4b97b4b85358602015c2eb6fbea84c582760859:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2MWMxNTM2NjYxYTQ3NWI1ZTdkYzA5ODRhNjc0YWI1MjdhN2Q3ODE2M2M4MGViODczMmE1YWNiMGMyNjgyYjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiZjVkYTE3OWM3MDBkMWQwODBhZTQ2NGVlMDQzNGQ0YWU2MTg2NzMzZjliYTZiNzliYThlM2U5ZjBmYWRlMzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgyN2JkN2ZmZGQwNGJiYzczMGE4MDc2NDdmZDY3OGM4ZjJiOTg4MzFhODQ2ZGUyMmRkN2Q3MjM2MDhmYTM1NGMifQ" }, { "resource": "repo://test/generation/repository-run.test.ts#L588-L631", - "version": "repo-lines-v1:sha256:477a0fdadf86f5f00c4ac56337ef34d2ac93a8242f6ea1b26ffcec5f789d0335:eyJzZWxlY3RlZExpbmVDb3VudCI6NDQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM5MTg5NDlkN2EzNDk4Nzg2YzQ0MTZjNzIxODY2OGFkYjc3MDI1MzdhZWU4MmNkMzRjZTY5NzRkODU2M2QyNjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhM2U0NmY5NDI3NmI2ZjZmNGVkMWYwMmFmNzhiZWY2YTJlZTFjNDM5ZGQ1NTg0Yjk3Mzk0ODMxMzIxNGQyYjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJiZGJmMmE1NDcxNDIzNWI1N2ViNjg2YjI4NDhjYTk0MjU0YjhmZmE1ZjhkZDIzMjUwZTcyYzIxOTc0ZjE3ZjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2ZTVmODQzZTUyMTg3ZTZiYjhlOTRmZmM4YWNlOWU4Nzc4MzQ2MTMwNjJhOTc3MzFjNWVlYTBlOGU5YmIzNzMifQ" + "version": "repo-lines-v1:sha256:477a0fdadf86f5f00c4ac56337ef34d2ac93a8242f6ea1b26ffcec5f789d0335:eyJzZWxlY3RlZExpbmVDb3VudCI6NDQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM5MTg5NDlkN2EzNDk4Nzg2YzQ0MTZjNzIxODY2OGFkYjc3MDI1MzdhZWU4MmNkMzRjZTY5NzRkODU2M2QyNjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhM2U0NmY5NDI3NmI2ZjZmNGVkMWYwMmFmNzhiZWY2YTJlZTFjNDM5ZGQ1NTg0Yjk3Mzk0ODMxMzIxNGQyYjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJiZGJmMmE1NDcxNDIzNWI1N2ViNjg2YjI4NDhjYTk0MjU0YjhmZmE1ZjhkZDIzMjUwZTcyYzIxOTc0ZjE3ZjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk1NTJkMzlkNWVlZjkwNTNjNTVjNDVmMmNiMDNjMzUzOTVjODUyZGQ0NWZiNDg2ZmY3MjRjNzBjMGU4YjVmNjgifQ" } ] }, @@ -525,10 +525,32 @@ "version": "repo-lines-v1:sha256:13627380b39e4db6da4cc54af4dbda6b44cae3659d3a1aaae7af0f32f8ec2db6:eyJzZWxlY3RlZExpbmVDb3VudCI6NjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFiZjhlODlkNGIyNjdjZmU5ZTBmMTU1ZDRjMzhjZmFmMmU2YTYwYjM4N2UxNDI0M2ZkYzQ0OWFmYmE2YjgwM2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY2ZjViNDBiMTU4NDU3ZDE3ODY0ZjIxNzkwNzg2ZGQ1YTJlY2RiNjRiNjZhNjUxZjc4OGQ0ZTI1Y2QzMzAzZDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJkMGYyZDNhM2FhZGEyNzU4NjQ1NzhkMGE0MzkxNTYzOGQ1NDNmZWNhMmM5NDg1OGRiOTQxMjExZTg2Y2VmMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBkY2QwNzAwMmMyMzI2MWJlODM5MmU1NmE0ZTY3NWYwYzhiNzQ2MTA2MDFlYzNhYWFjOTkwMWYwZTcyMWU2NTUifQ" } ] + }, + { + "id": "claim_910b32f17374411d88fc31eac4c8a426", + "statement": "beginRepositoryRun rejects an unrecognized requested language with an invalid_input RepositoryRunError via resolveLanguage before touching the repository or creating any run state, because falling back to English would persist the wrong language in run state and resume refuses to change a started run's language. This gate protects both native and host-driven begin, since both reach begin with an unvalidated language string.", + "evidence": [ + { + "resource": "repo://src/generation/repository-run.ts#L322-L336", + "version": "repo-lines-v1:sha256:8eef6873c567abfb0a9ab1694615ec3468b962468bd7595d53369aff84092410:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjljNzI5NzlkYzQ1NGJhZGQxZjQyNDY3MTQwMzBjNjAzNzFhZjc5MWMxZTY1MDg1OTUwOTQ3MTNmNWUwZjIyMDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhM2U0NmY5NDI3NmI2ZjZmNGVkMWYwMmFmNzhiZWY2YTJlZTFjNDM5ZGQ1NTg0Yjk3Mzk0ODMxMzIxNGQyYjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA0YTc4YjM5ZGM0ODFlMDI1NWU1ZDEwZGI3NjMyNjBlNWNkMzkzZWQ1MzkzZjYyYWUyM2M1YTA4NWZkZmQ3MjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgzM2RkYTRiMDI0YWE3YTExYzA2NDI2Y2VkMTExMjkwY2FiNTU2MDg5MDAyMDkwMTFkZmZjYmI1MTBhYWM1NjEifQ" + }, + { + "resource": "repo://src/integrations/core/session-manager.ts#L127-L137", + "version": "repo-lines-v1:sha256:086d6e18f37a07f101d2f874cafdd30e6574132a5e393a462d387a3714c652d0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMzYWRiYzUyMzU2NDAwZjJhOTVkZWNhZmNmZWU0NWNkYTJiNWY3NDVlZTRjZThkYjM1MGJkZjQ5MTQyOGUzZDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcxN2FmMTEwMWM5N2I3YzJmNTI1NDA3ODJlNjM0Y2M0NDQwZjBlOTcwMzQxZTUyZjk3NTIzMTFkNzhiN2Q3ZDAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVkNmRlN2E1ODE1OGVhYzk2MTNjNzU0NThjMmNlMjkxN2QxNWY2ZjcyMmZhMTlkZmYzNDZhMTEzYmJiNTliM2UiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM3Yjk3YmY4NDM2Mzg3Yjc0MWQ4ZjM4ZWEzN2M2NjI5M2Y4MTg4YjhjOWNiZjMyYWI2ZDMwMzY2ODA1NzJhZTcifQ" + }, + { + "resource": "repo://src/platform/language.ts#L25-L53", + "version": "repo-lines-v1:sha256:633d65cbdb437a58d2d3ba806f22b8b8a3c3123d30adef91159f6e8886d909d1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlODcwMTQzOGYwNDEzYTI0ZTY5YmMwYWI3N2U2NzU2ZGVhNDQ4M2IwN2JlZjU0ZGVjOTVkNTUyZjM4ODU3NDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk0N2ExYjkwYTQ0OWYzMGQ4MGRlMmY3NjJkZDJlOTEyNWUzNDRhMzQwOGFiMmQ5OWQzYjBkNTk0MGZhNjVkMTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE2NzgwZGU1NTA2MDU3MjA1ZGU0M2YxOTc0ZTE5NmFiNWRkZDNiOGJiZjFlZGFkMjg0NWFhYWE2NmM4YzEwZjUifQ" + }, + { + "resource": "repo://test/generation/repository-run.test.ts#L633-L676", + "version": "repo-lines-v1:sha256:ce5f2fbe7648aa3e8de8c2a90b90b428d1a6faef2945cad518d4bba5aaf5433c:eyJzZWxlY3RlZExpbmVDb3VudCI6NDQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZlNjI3MjRhNTIzMzZhZGQzYTYwMzZkMTFhNTRjNjEwNTllM2M5MTkzMGIwODIzNDI2OWRhY2YyMzBmYWM2M2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhM2U0NmY5NDI3NmI2ZjZmNGVkMWYwMmFmNzhiZWY2YTJlZTFjNDM5ZGQ1NTg0Yjk3Mzk0ODMxMzIxNGQyYjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEzNDJjYTNjYmU5ZWEzZGM2MjVkY2RmNWZlYmNhNjFmMzA0ZDg0YTg5NDI0M2I3OTI5NmQ5YjMwOWVmMzg3YmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVhMzRkMjhmYmQzZDY5ZDhiYTMzZGM0MTIyODJlNDNlZWQwNzVhZmFkNTA3Njg0NGQ2MDdlYTRmNDc2OWRjYWUifQ" + } + ] } ], "verification": { "by": "openwiki/0.4.3", - "at": "2026-08-28T03:39:43.412Z" + "at": "2026-08-29T08:08:01.897Z" } } diff --git a/openwiki/.last-update.json b/openwiki/.last-update.json index f39896a48..86b81db50 100644 --- a/openwiki/.last-update.json +++ b/openwiki/.last-update.json @@ -1,7 +1,7 @@ { - "updatedAt": "2026-08-28T11:48:05.971Z", + "updatedAt": "2026-08-29T08:58:34.548Z", "command": "update", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", "model": "z-ai/glm-5.2", "status": "complete", "language": "en" diff --git a/openwiki/.page-manifest.json b/openwiki/.page-manifest.json index 9e55871ce..0a847a79c 100644 --- a/openwiki/.page-manifest.json +++ b/openwiki/.page-manifest.json @@ -2,133 +2,145 @@ "schemaVersion": 1, "pages": { "/openwiki/architecture/agent-runtime.md": { - "pageVersion": "sha256:75508a3f5ff695fb0a06563aaf99fd952e2f0c6c21fe11f3fd6a03c2874afedd", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "pageVersion": "sha256:4bff825abb721e269eb29ffe443ab79eb39da996a6d69751f5b17fe97fc592c2", + "completedBy": "openwiki/0.4.3", + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/architecture/overview.md": { - "pageVersion": "sha256:48905742af3df5cc56792f8eede01b7ae43c305abbbf2dc63ea3ce70bc414cf5", + "pageVersion": "sha256:3ea1b40752b351f31e1f67f490ab2465e69acc80c4a762966d9d385afb1c2f47", "completedBy": "openwiki/0.4.3", - "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/architecture/source-map.md": { - "pageVersion": "sha256:f5c91a09424a8ba09516ceddf6ea31fa1408e6652979b5b871af2f7f9a922520", + "pageVersion": "sha256:b80fa3949378bb9fa986472172da341e8ffe6bb5d52b26656221fee25a09d14c", "completedBy": "openwiki/0.4.3", - "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/concepts/grounded-claims.md": { "pageVersion": "sha256:1da0d6747f2d76d52ebad0a8aeb070eefbedecb10ffb38c624850140d9e8816d", "completedBy": "openwiki/0.4.3", "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/concepts/model-providers.md": { - "pageVersion": "sha256:7184f4f9896e5ddd001bafc00558e5bfac684857918eadf98910366e7dad98cb", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "pageVersion": "sha256:ed6d0b8a894cc3ea6bb669111aa239ffed65db4882a16d0943b85e3e29b2b26e", + "completedBy": "openwiki/0.4.3", + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/concepts/okf-output.md": { "pageVersion": "sha256:68ef6feb90a382c062c2d1e78c3a647b29c04c4c786b13d049e05083eb1ae607", "completedBy": "openwiki/0.4.3", "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/concepts/two-modes.md": { - "pageVersion": "sha256:1f20b2d0755187863b358f1e9e0b404e29376f56fbad9876d9d66024546b7b61", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "pageVersion": "sha256:ac50027a6278acc67b1c5125ad7327a9885484697131c979b26e9a2298c77c50", + "completedBy": "openwiki/0.4.3", + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/integrations/coding-agents.md": { - "pageVersion": "sha256:c178cda8b1791ede75cabefd9f8e83b50a30c929c8a596d4309fc0b73d15e377", + "pageVersion": "sha256:6c6a17f25635d460cdf1e8f30ed3f3d4ec09d0faf42c310110cb4d88e77eca83", "completedBy": "openwiki/0.4.3", - "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/integrations/connectors.md": { "pageVersion": "sha256:7ae63c5949a7a323e6f5cc77f9f4c0c8a8a312da456532695d1d714e327e0c41", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/integrations/visualizer.md": { "pageVersion": "sha256:316b06ac0e020cbf8d00d253245b293aa04cc74502b99b8de4f13910a88d8d3a", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/operations/ci-scheduling.md": { "pageVersion": "sha256:13a7bd8b25d2aa664a022595503ded6425137099a80ca3d2fbf43820bd887272", "completedBy": "openwiki/0.4.3", "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/operations/cli-reference.md": { - "pageVersion": "sha256:9d35ba815d632b4513bbe3eb03baf420d8d147c9930bdec90a72f41f78404512", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "pageVersion": "sha256:0b468d917a18af0309a3ade77520af5ebdf89c8f46668322dde5d3aff242412f", + "completedBy": "openwiki/0.4.3", + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/operations/configuration.md": { - "pageVersion": "sha256:be8435e051eb6053eb241c190be58890f208fbcebb0c437faee0828f0e1465f4", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "pageVersion": "sha256:71af366a9bce21906854f4b73c92143bf2fb8608f8c45ed74d18076c477cafe9", + "completedBy": "openwiki/0.4.3", + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/operations/telemetry.md": { - "pageVersion": "sha256:d9fec99a602b674accda34271a6c6d39ab9e7d18dc07d95c343cb772f5216f3a", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "pageVersion": "sha256:3c710a0d0e0e47caca6dacdf81c9c01ac447a897914bf66f560a9f5dca997b76", + "completedBy": "openwiki/0.4.3", + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/quickstart.md": { - "pageVersion": "sha256:f52800159a11793bef52478fe78961343eede600f7afbec1be2c09186af09064", + "pageVersion": "sha256:d122c6ef870c68f073b10af91c59babccd494283e1269e539f4869dd020fcd84", "completedBy": "openwiki/0.4.3", - "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/testing/overview.md": { "pageVersion": "sha256:79d7d5a2e17c8c81b423b96a8e34c5aa30a04055d5520ebf6c22426b56075b6d", "completedBy": "openwiki/0.4.3", "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/workflows/claims-reconciliation.md": { - "pageVersion": "sha256:ce6278a5885c2a2d1bb6cbe9f5f46c9c994edf29e6db4a56914f17dbef7772d0", + "pageVersion": "sha256:e953e42095598fb92140d60dcaeca620e516074aa9148f6a82a2418a8123056b", "completedBy": "openwiki/0.4.3", - "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/workflows/onboarding.md": { - "pageVersion": "sha256:af3ccdea8e494d703dc433f5a45a51f38d36c1b3e0f78a3971a5a3b9b7146be9", + "pageVersion": "sha256:c9d8c97931abfb3bd31cdb189c3b197993c0907ea670bf62939247a5c3d92b5d", "completedBy": "openwiki/0.4.3", - "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/workflows/personal-ingestion.md": { "pageVersion": "sha256:bf8bf3823081b84a0e7366c6fe1b278f325279f39358d2e905ed063dbd31e858", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/workflows/repository-generation.md": { - "pageVersion": "sha256:1c349a9ee3ccc623949d8b357b763e8bb8ccb12c0c54d56565db1bdeb678f65a", + "pageVersion": "sha256:7bc68508fbe8bd9914e5ac6ffc1c20cb0232e78a04c4100d9a8f6c49aba5d8de", "completedBy": "openwiki/0.4.3", - "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "completedRunId": "a23f8a78-e931-472b-9cf0-b2521e05bb87", + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" }, "/openwiki/workflows/wiki-finalization.md": { "pageVersion": "sha256:1e96ba1faedfdc5cf2dcfb5fff3ae6f16539480b495f266500f16eebbc6728a0", "completedBy": "openwiki/0.4.3", "completedRunId": "25ad9fb2-1d12-417f-b5d7-a7ebfd6753f5", - "gitHead": "c666f4262e4340e5675fa9804bb342b87bf87f1a", - "sourceFingerprint": "sha256:7729d7bc0fd6d706dab945666c31545726dbb1c3e9a57fec2a2091c452e7323a" + "gitHead": "97c6ef0ce72912cb3ba70a238a94b2dbc6b3b190", + "sourceFingerprint": "sha256:4d0f741a74b54686d6bf976e752f6412acb0c8ccca39d6059d8c426cd7f3b966" } } } diff --git a/openwiki/architecture/agent-runtime.md b/openwiki/architecture/agent-runtime.md index 2bc15aefe..108054693 100644 --- a/openwiki/architecture/agent-runtime.md +++ b/openwiki/architecture/agent-runtime.md @@ -10,8 +10,8 @@ tags: - filesystem-sandbox - langchain verified: - - by: openwiki/0.4.0 - at: 2026-08-26T20:17:27.397Z + - by: openwiki/0.4.3 + at: 2026-08-29T08:08:01.897Z sources: - id: openwiki-source-0ad86abe7202c4e4d6897f34 resource: repo://src/agent/agent-backend.ts @@ -35,7 +35,7 @@ sources: resource: repo://src/config/reasoning.ts - id: openwiki-source-ebe194cbeaa2594a6699f9a1 resource: repo://src/model-availability.ts -generated: { by: "openwiki/0.4.0", at: "2026-08-26T20:17:27.397Z" } +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } --- # Agent Runtime, Models, and Middleware @@ -76,7 +76,7 @@ Provider selection is `resolveConfiguredProvider`: an explicit `OPENWIKI_PROVIDE The model id comes from `resolveModelId`: it prefers an explicit option or `OPENWIKI_MODEL_ID`, else the provider's default; a provider with no built-in model options requires the id to be set. The id is normalized and validated, and if it is a known model of a different provider a non-fatal mismatch warning is emitted (the run still proceeds, since a custom gateway may serve it). Resolution also queries `getSelectedModelAvailability`, which aborts the run when a model is provably `unavailable`, but treats an `unknown` result as fine — a catalogue lookup failure is not proof a model cannot be invoked, and only the direct `openai` provider (with an API key and no custom base URL) is actually checked. -After model resolution, `resolveRunConfig` resolves three provider-neutral operational settings that flow into `createModel`: the retry count (`OPENWIKI_PROVIDER_RETRY_ATTEMPTS`), the per-request output-token cap (`OPENWIKI_MAX_OUTPUT_TOKENS`, translated to each SDK's field name), and — for `bedrock` only — the stream idle-timeout watchdog (`OPENWIKI_STREAM_IDLE_TIMEOUT`). These are reported through the debug log so a run's effective limits are observable. +After model resolution, `resolveRunConfig` resolves three provider-neutral operational settings that flow into `createModel`: the retry count (`OPENWIKI_PROVIDER_RETRY_ATTEMPTS`), the per-request output-token cap via `resolveConfiguredMaxOutputTokens` (`OPENWIKI_MAX_OUTPUT_TOKENS` translated to each SDK's field name, with Bedrock falling back to a 16,000-token default when the neutral setting is unset), and — for `bedrock` only — the stream idle-timeout watchdog (`OPENWIKI_STREAM_IDLE_TIMEOUT`). These are reported through the debug log so a run's effective limits are observable. ## The provider matrix and model instantiation @@ -89,10 +89,11 @@ Each branch constructs a purpose-built client: - **Gemini Enterprise (Vertex)** delegates to `createGeminiEnterpriseModel`, which picks the client from the model family: Claude via the Anthropic Vertex SDK, partner/open-weight models over Vertex's OpenAI-compatible MaaS surface, and Gemini/Gemma over native `generateContent`. Auth is uniform ADC + project + region; only the transport differs. - **ChatGPT OAuth** reuses `ChatOpenAI` against the Codex Responses backend with `useResponsesApi`, `zdrEnabled` (forcing `store: false`), forced streaming, and the account/originator/beta headers the Codex backend requires. - **OpenRouter** builds `ChatOpenRouter` against the OpenRouter base URL, optionally pinning an upstream provider allowlist; a legacy OpenRouter-specific output cap still takes precedence there over the provider-neutral cap. -- **Bedrock** builds `ChatBedrockConverse` with the resolved AWS region and, when `OPENWIKI_STREAM_IDLE_TIMEOUT` is set, a stream idle-timeout watchdog that aborts a generation stalled waiting for its first or next chunk (0 disables it). +- **Bedrock** builds `ChatBedrockConverse` with the resolved AWS region, the resolved output-token cap (now always threaded as `maxTokensOptions` because Bedrock falls back to a default of 16,000 tokens rather than letting the Converse API cap at 4,096), and, when `OPENWIKI_STREAM_IDLE_TIMEOUT` is set, a stream idle-timeout watchdog that aborts a generation stalled waiting for its first or next chunk (0 disables it). +- **Copilot** shares the `ChatOpenAI` fallthrough below, but `providerUsesStreaming` forces the streaming HTTP transport for every Copilot model: non-GPT-5 models (Claude, Gemini) are served over chat completions and reject or return empty responses for non-streaming requests, so without `streaming: true` a repository worker can exit without calling `submit_plan`/`submit_page`. The flag is redundant but harmless for GPT-5 models that use the Responses API, matching the `openai-chatgpt` pattern. - **OpenAI and all OpenAI-compatible gateways** fall through to a shared `ChatOpenAI` branch that honors a per-provider base URL, chooses the Responses API when the provider config asks for it, and forces the streaming HTTP transport for gateways that only serve SSE. -The provider-neutral output limit is the single `OPENWIKI_MAX_OUTPUT_TOKENS` setting: because a run constructs only one model, one value is mapped to each SDK's field name (`maxTokens` for OpenAI/Anthropic/MaaS, `maxOutputTokens` for Gemini), with OpenRouter's older `OPENWIKI_OPENROUTER_MAX_TOKENS` cap retained for backward compatibility and taking precedence on OpenRouter runs. When unset the limit is omitted so the provider default applies (Anthropic's modern-Claude default aside). +The provider-neutral output limit is the single `OPENWIKI_MAX_OUTPUT_TOKENS` setting: because a run constructs only one model, one value is mapped to each SDK's field name (`maxTokens` for OpenAI/Anthropic/MaaS/Bedrock, `maxOutputTokens` for Gemini), with OpenRouter's older `OPENWIKI_OPENROUTER_MAX_TOKENS` cap retained for backward compatibility and taking precedence on OpenRouter runs. When unset the limit is omitted so the provider default applies — except for Bedrock, where `resolveConfiguredMaxOutputTokens` falls back to `resolveBedrockMaxTokens` (default `BEDROCK_DEFAULT_MAX_TOKENS` = 16,000, overridable via `OPENWIKI_BEDROCK_MAX_TOKENS`) so the Converse API no longer truncates at its built-in 4,096-token ceiling; Anthropic's modern-Claude default is a separate, Anthropic-only behavior. `createModel` also threads a resolved reasoning config: `OPENWIKI_REASONING_EFFORT` is applied only to models that declare a reasoning capability, and it is sent either as a Responses-API `reasoning.effort` payload or as a chat-completions `reasoning_effort` kwarg depending on the model's declared transport; an unsupported provider/model or an invalid effort value throws. diff --git a/openwiki/architecture/overview.md b/openwiki/architecture/overview.md index f31ac0f1b..c4e05a50b 100644 --- a/openwiki/architecture/overview.md +++ b/openwiki/architecture/overview.md @@ -14,9 +14,6 @@ tags: connectors, visualizer, ] -verified: - - by: openwiki/0.4.3 - at: 2026-08-28T03:39:43.412Z sources: - id: openwiki-source-23775c3de52f3ab95a13cb8b resource: repo://README.md @@ -40,7 +37,10 @@ sources: resource: repo://src/integrations/core/protocol.ts - id: openwiki-source-58835b77ce38a0dd1fed8d09 resource: repo://src/integrations/core/session-manager.ts -generated: { by: "openwiki/0.4.3", at: "2026-08-28T03:39:43.412Z" } +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } +verified: + - by: openwiki/0.4.3 + at: 2026-08-29T08:08:01.897Z --- # Architecture Overview @@ -140,11 +140,13 @@ page-job runner. More detail lives in `runNativeRepositoryGeneration` drives the same durable lifecycle the host integrations use, but with OpenWiki's own model. It begins or resumes a run, runs a bounded planner when the run is in the planning phase, runs one fresh -per-page worker for each pending page job, and finalizes. Each worker is a -non-delegating DeepAgent: the planner gets read-only filesystem tools plus -`submit_plan`; page workers additionally get `write_file`/`edit_file` plus -`submit_page`, and the general-purpose `task` delegation tool is stripped so -workers cannot spawn subagents. +per-page worker for each pending page job, and finalizes. `beginRepositoryRun` +rejects an unrecognized language with `invalid_input` before touching the +repository, so a typo never persists the wrong language in run state. Each +worker is a non-delegating DeepAgent: the planner gets read-only filesystem +tools plus `submit_plan`; page workers additionally get `write_file`/`edit_file` +plus `submit_page`, and the general-purpose `task` delegation tool is stripped +so workers cannot spawn subagents. The lifecycle is resumable and self-correcting. Before a page worker runs, its pending page and Claims sidecar are snapshotted (`captureRepositoryPageSnapshot`). @@ -177,11 +179,13 @@ of launching an OpenWiki model. The MCP server exposes exactly five transport-neutral tools — `openwiki_begin`, `openwiki_submit_plan`, `openwiki_next_page`, `openwiki_submit_page`, and `openwiki_finish` — backed by a session manager that holds at most one active process-local run and rejects -any operation whose `runId` does not match. The coding agent owns repository -research, planning, and factual authoring; OpenWiki owns the durable queue, -Claims validation and persistence, source-drift handling, and deterministic -finalization. Host-driven runs use only repository source and tests; connector -context is not yet available to them. +any operation whose `runId` does not match. `openwiki_begin` rejects an +unrecognized `language` with `invalid_input` instead of starting a run, so the +caller can correct the code and retry with nothing to clean up. The coding agent +owns repository research, planning, and factual authoring; OpenWiki owns the +durable queue, Claims validation and persistence, source-drift handling, and +deterministic finalization. Host-driven runs use only repository source and +tests; connector context is not yet available to them. ## Claims diff --git a/openwiki/architecture/source-map.md b/openwiki/architecture/source-map.md index 449be4296..d0e9b75f5 100644 --- a/openwiki/architecture/source-map.md +++ b/openwiki/architecture/source-map.md @@ -54,10 +54,10 @@ sources: resource: repo://src/visualize/graph.ts - id: openwiki-source-4d856d692c32be213c8c46b4 resource: repo://src/visualize/server.ts -generated: { by: "openwiki/0.4.3", at: "2026-08-28T03:39:43.412Z" } +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } verified: - by: openwiki/0.4.3 - at: 2026-08-28T03:39:43.412Z + at: 2026-08-29T08:08:01.897Z --- # Source Map @@ -90,19 +90,28 @@ before anything else. the provider environment-variable key names and defaults for every supported provider (`OPENAI_API_KEY_ENV_KEY`, `ANTHROPIC_API_KEY_ENV_KEY`, Bedrock/Vertex, Gemini, OpenRouter, Baseten, Copilot, Fireworks, Nebius, NVIDIA, and the - connector OAuth keys) and the `OpenWikiProvider` union. Nearly every subsystem - imports its identifiers from here. + connector OAuth keys) and the `OpenWikiProvider` union. It also owns the + output-token ceilings: `resolveConfiguredMaxOutputTokens` picks the right + provider-specific setting (OpenRouter's legacy `OPENWIKI_OPENROUTER_MAX_TOKENS` + first, then `OPENWIKI_MAX_OUTPUT_TOKENS`), and `resolveBedrockMaxTokens` falls + back to `BEDROCK_DEFAULT_MAX_TOKENS` (16000) so Bedrock's 4096-token default + does not truncate long pages. Nearly every subsystem imports its identifiers + from here. - **`src/generation/repository-run.ts`** owns the repository-generation lifecycle. It drives the plan-then-page workflow with `beginRepositoryRun`, `submitRepositoryPlan`, `nextRepositoryPage`, `submitRepositoryPage`, and `finishRepositoryRun`, wiring together the run state, claims runtime, wiki finalizer, and OKF frontmatter validation — including deterministic - frontmatter repair (`repairPersistedFile`) before a page job is accepted. It - also owns the skip-failed-page-workers path: `captureRepositoryPageSnapshot` - records the pending page and its claims sidecar before a worker runs, - `skipRepositoryPage` rolls a failed worker back (restoring the page markdown - and sidecar, marking the job `skipped`), and `restoreRepositoryPageMarkdown` - re-applies the snapshot during `finishRepositoryRun` for every skipped job. + frontmatter repair (`repairPersistedFile`) before a page job is accepted. + `beginRepositoryRun` resolves the requested language up front + (`resolveLanguage`) and rejects an unrecognized language with + `invalid_input` rather than falling back to English, since run state cannot + change its language after a start. It also owns the skip-failed-page-workers + path: `captureRepositoryPageSnapshot` records the pending page and its + claims sidecar before a worker runs, `skipRepositoryPage` rolls a failed + worker back (restoring the page markdown and sidecar, marking the job + `skipped`), and `restoreRepositoryPageMarkdown` re-applies the snapshot + during `finishRepositoryRun` for every skipped job. ## Subsystems @@ -132,19 +141,22 @@ page and mark it `skipped`, collects those snapshots, and passes them to ### generation — repository run lifecycle and page jobs Orchestrates a full repository wiki build. Principal entry: -`src/generation/repository-run.ts`. `src/generation/run-state.ts` owns the -durable on-disk checkpoint (`.run.json`, schema-versioned, with `planning`/ -`generating` phases and `pending`/`skipped`/`complete` page-job statuses) so -runs resume after interruption. `src/generation/page-jobs.ts` builds the plan -(`createRepositoryPlan`) and replaces per-page claims (`replacePageClaims`). -`src/generation/page-manifest.ts` owns the committed page-correctness ledger -(`openwiki/.page-manifest.json`, schema-versioned), recording each completed -page's source fingerprint, page version, and producer provenance. -`src/generation/errors.ts` defines `RepositoryRunError`. The lifecycle's -snapshot/skip/restore operations (`captureRepositoryPageSnapshot`, -`skipRepositoryPage`, `restoreRepositoryPageMarkdown`) let a failed page worker -be rolled back to its pre-work state and marked `skipped` rather than failing -the whole run; `finishRepositoryRun` requires a snapshot for every skipped job +`src/generation/repository-run.ts`, which imports `resolveLanguage`/ +`requireResolvedLanguage` from `platform/language.ts` so `beginRepositoryRun` +can reject an unrecognized language before any run state is written. +`src/generation/run-state.ts` owns the durable on-disk checkpoint (`.run.json`, +schema-versioned, with `planning`/`generating` phases and `pending`/`skipped`/ +`complete` page-job statuses) so runs resume after interruption. +`src/generation/page-jobs.ts` builds the plan (`createRepositoryPlan`) and +replaces per-page claims (`replacePageClaims`). `src/generation/page-manifest.ts` +owns the committed page-correctness ledger (`openwiki/.page-manifest.json`, +schema-versioned), recording each completed page's source fingerprint, page +version, and producer provenance. `src/generation/errors.ts` defines +`RepositoryRunError`. The lifecycle's snapshot/skip/restore operations +(`captureRepositoryPageSnapshot`, `skipRepositoryPage`, +`restoreRepositoryPageMarkdown`) let a failed page worker be rolled back to its +pre-work state and marked `skipped` rather than failing the whole run; +`finishRepositoryRun` requires a snapshot for every skipped job and re-applies those snapshots before finalizing. ### claims — grounded-claim persistence and evidence resolution @@ -212,8 +224,11 @@ Owns credential acquisition and storage. Principal entries: `src/auth/oauth.ts` Owns runtime configuration. `src/config/constants.ts` is the central identifier registry (path constants, provider env keys, the `OpenWikiProvider` union, and -defaults); `env.ts` loads and saves the OpenWiki `.env`; `openwiki-home.ts` -resolves the home/wiki directories; `reasoning.ts` resolves reasoning settings. +defaults), and also owns the output-token resolution helpers +(`resolveConfiguredMaxOutputTokens`, `resolveBedrockMaxTokens`, +`BEDROCK_DEFAULT_MAX_TOKENS`); `env.ts` loads and saves the OpenWiki `.env`; +`openwiki-home.ts` resolves the home/wiki directories; `reasoning.ts` resolves +reasoning settings. ### integrations — host-tool integration and MCP server surface @@ -225,7 +240,12 @@ the transport-neutral lifecycle core, serializing one lifecycle operation at a t `submitPage`, and `finish` methods delegate to the `generation/repository-run.ts` lifecycle, and `tools()` returns exactly the five OpenWiki lifecycle tools (`openwiki_begin`, `openwiki_submit_plan`, `openwiki_next_page`, -`openwiki_submit_page`, `openwiki_finish`) for an MCP transport to expose. +`openwiki_submit_page`, `openwiki_finish`) for an MCP transport to expose. The +tool descriptions are the host-facing contract: `openwiki_begin` advertises that +an unrecognized `language` returns `invalid_input` instead of starting a run, +`openwiki_submit_page` states the Claim-reconciliation rules (reuse ids for +revisions, omit to retract, omit id for new), and `openwiki_finish` requires +every job complete before deterministic deletion/validation/indexing. `src/integrations/core/protocol.ts` defines the tool input schemas and host-id validation; `repository-root.ts` resolves the repository root. `src/integrations/mcp/server.ts` exposes OpenWiki over MCP (stdio in diff --git a/openwiki/concepts/model-providers.md b/openwiki/concepts/model-providers.md index 8bc2c3bcb..afe705d41 100644 --- a/openwiki/concepts/model-providers.md +++ b/openwiki/concepts/model-providers.md @@ -3,9 +3,6 @@ type: reference title: Model Providers and Credentials description: Reference for OpenWiki's supported model providers, their environment keys, base URLs, and authentication methods (API keys, ChatGPT OAuth, Vertex ADC, AWS SDK, and external CLI), and where credentials and OAuth tokens are persisted. tags: [model-providers, credentials, oauth, authentication, configuration, env] -verified: - - by: openwiki/0.3.3 - at: 2026-08-25T02:14:25.283Z sources: - id: openwiki-source-a953060a04ccefcf777de48e resource: repo://src/agent/index.ts @@ -21,7 +18,10 @@ sources: resource: repo://src/config/env.ts - id: openwiki-source-c35800ddf00768a1fa848d13 resource: repo://src/setup/credentials/persistence.ts -generated: { by: "openwiki/0.3.3", at: "2026-08-25T02:14:25.283Z" } +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } +verified: + - by: openwiki/0.4.3 + at: 2026-08-29T08:08:01.897Z --- # Model Providers and Credentials @@ -41,7 +41,11 @@ how that provider is configured and authenticated. Helper accessors (`getProviderConfig`, `getProviderApiKeyEnvKey`, `getProviderAuthMethod`, `getProviderBaseUrlEnvKey`, `resolveProviderBaseUrl`, `resolveProviderRegion`, `resolveProviderLocation`, and friends) read from this registry rather than -hardcoding provider knowledge elsewhere. +hardcoding provider knowledge elsewhere. Two transport-selecting accessors +take a model ID in addition to the provider: `providerUsesResponsesApi` +(`true` for `openai`, the `gpt-5` pattern for `copilot`, and a configurable +flag for `openai-compatible`) and `providerUsesStreaming` (forced on for +`copilot` and configurable for `openai-compatible`). The active provider is resolved by `resolveConfiguredProvider`: it prefers the explicit `OPENWIKI_PROVIDER` value (normalized case-insensitively by @@ -179,6 +183,20 @@ surface; `createGeminiEnterpriseModel` selects the transport per model ID via - `anthropic` — Claude over Anthropic's wire protocol, bridged through `ChatAnthropic`'s `createClient` hook and the `AnthropicVertex` SDK, which authenticates via ADC. - `openai-maas` — partner/open-weight models (Llama, Mistral, DeepSeek, Qwen, …) over Vertex's OpenAI-compatible endpoint, whose base URL is built by `vertexOpenAIBaseUrl`. + +```text +flowchart TD + Model["modelId"] -> Resolve["resolveVertexSurface"] + Resolve -->|anthropic / claude| Claude["ChatAnthropic createClient + AnthropicVertex (ADC)"] + Resolve -->|openai-maas / llama, mistral, ...| MaaS["ChatOpenAI at vertexOpenAIBaseUrl (createVertexAuthFetch ADC bearer)"] + Resolve -->|gemini / default| Gemini["ChatGoogle generateContent (ADC)"] + Claude -> Project["GOOGLE_CLOUD_PROJECT + GOOGLE_CLOUD_LOCATION"] + MaaS -> Project + Gemini -> Project +``` + +Diagram: How `createGeminiEnterpriseModel` routes one ADC credential to three Vertex surfaces by model family. + For the MaaS surface the OpenAI SDK authenticates via an `Authorization` header, so `createVertexAuthFetch` wraps `fetch` to inject a fresh ADC bearer token on every request (Google's auth client caches and auto-refreshes it), keeping @@ -198,10 +216,25 @@ bearer token (`AWS_BEARER_TOKEN_BEDROCK`) precedence, then validates the legacy `BEDROCK_AWS_ACCESS_KEY_ID` / `BEDROCK_AWS_SECRET_ACCESS_KEY` pair and the standard `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` pair — rejecting a partial or blank pair but allowing an entirely absent one so OIDC/web identity, IAM -roles, or `AWS_PROFILE`/SSO can still resolve. Bedrock requires a region -(`requiresRegion`), resolved from `BEDROCK_AWS_REGION` with fallbacks to -`AWS_REGION` and `AWS_DEFAULT_REGION`. Its model list is empty because available -model IDs are account- and region-specific and must be pasted directly. +roles, or `AWS_PROFILE`/SSO can still resolve. A complete legacy pair short- +circuits to `null` so unrelated standard AWS variables cannot affect the run. +Bedrock requires a region (`requiresRegion`), resolved from `BEDROCK_AWS_REGION` +with fallbacks to `AWS_REGION` and `AWS_DEFAULT_REGION`. Its model list is empty +because available model IDs are account- and region-specific and must be pasted +directly. + +Without an explicit `maxTokens`, the Bedrock Converse API caps output at 4096 +tokens by default, which truncates long wiki pages mid-write. OpenWiki avoids +this by defaulting Bedrock to a 16000-token ceiling: +`resolveBedrockMaxTokens` returns `BEDROCK_DEFAULT_MAX_TOKENS` (16000) unless +`OPENWIKI_BEDROCK_MAX_TOKENS` overrides it (validated as a positive integer), +matching @langchain/anthropic's built-in ceiling for Claude models. The provider- +neutral `resolveConfiguredMaxOutputTokens` — used by `createModel` to set +`maxTokens` — applies this Bedrock default as its last fallback: when the provider- +neutral `OPENWIKI_MAX_OUTPUT_TOKENS` is unset, a Bedrock run still gets the 16000 +default instead of the Converse API's 4096 cap (the OpenRouter legacy +`OPENWIKI_OPENROUTER_MAX_TOKENS` setting takes precedence on OpenRouter runs, and +an explicit `OPENWIKI_MAX_OUTPUT_TOKENS` always wins for any provider). ### External CLI auth (GitHub Copilot) @@ -216,6 +249,16 @@ host authenticates against the correct tenant. `runExternalCliLogin` can launch `gh auth login` interactively when no session exists; for CI, `COPILOT_API_KEY` may still be set directly. +The Copilot API serves non-GPT-5 models (Claude, Gemini) over the chat +completions transport and rejects or returns empty responses for non-streaming +requests, which would cause repository workers to exit without calling +`submit_plan`/`submit_page`. `providerUsesStreaming` therefore forces the +streaming HTTP transport (`streaming: true`) for every Copilot model — the same +rationale that forces streaming on the openai-chatgpt Codex backend. For GPT-5 +models that use the Responses API (`responsesApi: /^gpt-5/u`), `streaming: true` +is redundant but harmless, matching the openai-chatgpt provider pattern. +`createModel` applies this with a conditional spread (`...(providerUsesStreaming(provider) ? { streaming: true } : {})`) rather than assigning `streaming: false`, because LangChain turns an explicit `false` into `disableStreaming`, which is not equivalent to omitting the key. + ## Credential persistence and env file All managed settings and credentials are read from and written to diff --git a/openwiki/concepts/two-modes.md b/openwiki/concepts/two-modes.md index c64dfef7b..9798c7fe9 100644 --- a/openwiki/concepts/two-modes.md +++ b/openwiki/concepts/two-modes.md @@ -3,9 +3,6 @@ type: concept title: Code vs Personal Modes description: How OpenWiki chooses between code mode (a repository wiki written to openwiki/) and personal mode (a knowledge brain written to ~/.openwiki/wiki), including mode selection, state directories, and which capabilities apply to each mode. tags: [modes, cli, configuration, repository-wiki, personal-wiki, output-mode] -verified: - - by: openwiki/0.3.3 - at: 2026-08-25T02:14:25.283Z sources: - id: openwiki-source-23775c3de52f3ab95a13cb8b resource: repo://README.md @@ -27,6 +24,9 @@ sources: resource: repo://src/connectors/tools.ts - id: openwiki-source-c6189f89b3f67d0cbf87739f resource: repo://src/ingestion/ingestion.ts +verified: + - by: openwiki/0.4.3 + at: 2026-08-29T08:08:01.897Z generated: { by: "openwiki/0.3.3", at: "2026-08-25T02:14:25.283Z" } --- diff --git a/openwiki/integrations/coding-agents.md b/openwiki/integrations/coding-agents.md index d7ea4d95a..398a56960 100644 --- a/openwiki/integrations/coding-agents.md +++ b/openwiki/integrations/coding-agents.md @@ -40,10 +40,12 @@ sources: resource: repo://src/integrations/mcp/server.ts - id: openwiki-source-6f06cc988142430d18f2233e resource: repo://src/integrations/mcp/stdio.ts -generated: { by: "openwiki/0.4.3", at: "2026-08-28T03:39:43.412Z" } + - id: openwiki-source-349c953869b025f9d4935470 + resource: repo://src/platform/language.ts +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } verified: - by: openwiki/0.4.3 - at: 2026-08-28T03:39:43.412Z + at: 2026-08-29T08:08:01.897Z --- # Coding-Agent Integrations (Codex/Claude/OpenCode/Cursor) @@ -86,10 +88,14 @@ tools, in order: `openwiki_begin`, `openwiki_submit_plan`, `openwiki_next_page`, a strict Zod schema before delegating to the repository-generation core. - **`openwiki_begin`** — Starts or resumes a run for an absolute Git root in - mode `init` or `update`, with optional `language` and `force`. It resolves the - root, calls `beginRepositoryRun`, and either records the active run or returns - a proven update **no-op** (`status=noop`) without an active run. A clean update - returns no-op so the host reports "no update required" and stops. + mode `init` or `update`, with optional `language` and `force`. It validates the + optional `language` via `resolveLanguage` and rejects an unrecognized BCP-47 + value with `invalid_input` before any run state is created, so a rejected + request leaves nothing to clean up and can simply be retried with a real code. + It then resolves the root, calls `beginRepositoryRun`, and either records the + active run or returns a proven update **no-op** (`status=noop`) without an + active run. A clean update returns no-op so the host reports "no update + required" and stops. - **`openwiki_submit_plan`** — Persists the run's final canonical page plan. `pages` may be empty (a valid update with no page work or only deletions), and `deletePages` is optional. diff --git a/openwiki/operations/cli-reference.md b/openwiki/operations/cli-reference.md index fd1adb381..aba60c311 100644 --- a/openwiki/operations/cli-reference.md +++ b/openwiki/operations/cli-reference.md @@ -3,9 +3,6 @@ type: cli-reference title: CLI Commands and Flags description: Reference for the OpenWiki CLI surface, covering command and flag parsing, run mode selection, print versus interactive dispatch, host integrations, visualize, cron scheduling, and how parsed commands are wired to their runners. tags: [cli, commands, flags, run-mode, integrations, visualize, cron, ink, mcp] -verified: - - by: openwiki/0.3.3 - at: 2026-08-25T02:14:25.283Z sources: - id: openwiki-source-5f52dc71fb07ef4892914c46 resource: repo://src/cli/app/app.tsx @@ -23,7 +20,12 @@ sources: resource: repo://src/cli/schedule-format.ts - id: openwiki-source-d80f123259efa4712b198b63 resource: repo://src/cli/startup.ts -generated: { by: "openwiki/0.3.3", at: "2026-08-25T02:14:25.283Z" } + - id: openwiki-source-349c953869b025f9d4935470 + resource: repo://src/platform/language.ts +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } +verified: + - by: openwiki/0.4.3 + at: 2026-08-29T08:08:01.897Z --- # CLI Commands and Flags @@ -90,8 +92,10 @@ Any invocation that is not a recognized subcommand is parsed by respective run command; specifying both is a parse error. `-p`/`--print` requests non-interactive output; because print needs something to do, it errors unless a message, `--init`, or `--update` is present. `--language`/`-l` takes a -locale that is canonicalized via `resolveLanguage`, dropping and warning about -unrecognized values before they reach the run. `--modelId`/`--model-id` (with +locale that is canonicalized via `resolveLanguage` when valid; an unrecognized +BCP-47 value is rejected with a parse error (`{ kind: "error", exitCode: 1 }`) +whose message names the offending value and suggests a BCP-47 code such as +`ko`, `zh-CN`, or `pt-BR`, so a typo can never quietly produce an English wiki. `--modelId`/`--model-id` (with `=value` and space-separated forms) is normalized and validated against `isValidModelId`. `--telemetry-file` records a run-event sink path. `--debug` sets `OPENWIKI_DEBUG` at parse time, and the developer-only `--dry-run` is @@ -99,6 +103,11 @@ rejected as an unknown option outside development mode (`NODE_ENV=development` or `OPENWIKI_DEV=1`). Remaining positional words are joined into the user message. +The `resolveLanguage`/`requireResolvedLanguage` internals — how +`getCanonicalLocales` and `DisplayNames` distinguish a recognized BCP-47 code +from a structurally valid but unregistered one — are documented in +[Configuration and Environment](./configuration.md). + ### Run mode selection Run mode is `personal` or `code`. It can be set three ways, tracked by diff --git a/openwiki/operations/configuration.md b/openwiki/operations/configuration.md index 5e92d5695..7a1d6d044 100644 --- a/openwiki/operations/configuration.md +++ b/openwiki/operations/configuration.md @@ -12,9 +12,6 @@ tags: reasoning, operations, ] -verified: - - by: openwiki/0.3.3 - at: 2026-08-25T02:14:25.283Z sources: - id: openwiki-source-278e7e180eac811fc1a24f7a resource: repo://src/config/constants.ts @@ -28,7 +25,10 @@ sources: resource: repo://src/platform/diagnostics.ts - id: openwiki-source-27fbd70857f0fae28185fe91 resource: repo://src/platform/windows-acl.ts -generated: { by: "openwiki/0.3.3", at: "2026-08-25T02:14:25.283Z" } +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } +verified: + - by: openwiki/0.4.3 + at: 2026-08-29T08:08:01.897Z --- # Configuration and Environment @@ -163,15 +163,30 @@ variables and optional base-URL override in `PROVIDER_CONFIGS`; see ### Token limits -`OPENWIKI_MAX_OUTPUT_TOKENS` is the provider-neutral per-request output cap, -parsed by `resolveMaxOutputTokens`, which accepts only a positive safe integer -(no fractions, exponents, or hex). `OPENWIKI_OPENROUTER_MAX_TOKENS` is a legacy -OpenRouter-specific cap retained for existing low-balance installations. -`resolveConfiguredMaxOutputTokens` picks between them: on OpenRouter runs the -legacy setting takes precedence when set, otherwise the provider-neutral setting -applies. The OpenRouter cap exists because, without it, OpenRouter's credit -pre-check budgets the model's full advertised output ceiling and rejects requests -with HTTP 402. +OpenWiki caps per-request output tokens through three settings, resolved by +`resolveConfiguredMaxOutputTokens` in a fixed precedence: + +1. `OPENWIKI_MAX_OUTPUT_TOKENS` — the provider-neutral cap, parsed by + `resolveMaxOutputTokens`, which accepts only a positive safe integer (no + fractions, exponents, or hex). When set, it applies to every provider. +2. Provider-specific caps, used only when the neutral setting is unset: + - On **OpenRouter**, `OPENWIKI_OPENROUTER_MAX_TOKENS` is a legacy cap retained + for existing low-balance installations. It takes precedence over the + Bedrock default whenever set, because without a cap OpenRouter's credit + pre-check budgets the model's full advertised output ceiling and rejects + requests with HTTP 402. + - On **Bedrock**, `OPENWIKI_BEDROCK_MAX_TOKENS` caps output for the Bedrock + Converse API. `resolveBedrockMaxTokens` **defaults to + `BEDROCK_DEFAULT_MAX_TOKENS` (16000)** when unset, matching + `@langchain/anthropic`'s built-in ceiling for Claude models — without an + explicit `maxTokens`, Bedrock caps output at 4096 tokens and truncates long + wiki pages mid-write. Override it for models with a lower ceiling. +3. When all of the above are unset, the resolved cap is `undefined` and the + provider SDK's own default applies (Bedrock excepted, which always gets the + 16000 default). + +In short: `OPENWIKI_MAX_OUTPUT_TOKENS` > provider-specific (OpenRouter legacy / +Bedrock default) > unset. ### Streaming and Responses API toggles @@ -213,15 +228,26 @@ capability supports. Reasoning capability is declared per provider and model in `getCredentialDiagnostics` produces one `CredentialDiagnostic` per key in `CREDENTIAL_DIAGNOSTIC_ENV_KEYS`, comparing the file value against the `process.env` value. Each entry reports its source — `process.env`, the env file -path, "process.env over <file>" when both are set, or `unset` — and a +path, "process.env over " when both are set, or `unset` — and a masked preview. Non-secret settings (provider, model, token limits, base URLs, region, Google project/location, and the boolean toggles) are shown verbatim; true secrets are previewed as a short masked fragment (or all-asterisks for short -values). Diagnostics also surface per-key warnings, for example invalid provider, -invalid model ID, invalid token limits, invalid boolean, invalid reasoning -effort, credential whitespace/newline/quote issues, and a warning that the +values). + +Diagnostics surface per-key warnings through a dedicated validator per key: +invalid provider, invalid model ID, invalid token limits (neutral, Bedrock, and +OpenRouter each have their own validator), invalid boolean, invalid reasoning +effort, invalid retry attempts, invalid stream idle timeout, base-URL provider +mismatches, credential whitespace/newline/quote issues, and a warning that the Bedrock stream watchdog is disabled when the idle timeout is `0`. +`OPENWIKI_BEDROCK_MAX_TOKENS` is treated as a **non-secret diagnostic key**: its +value is shown verbatim in the panel and validated by its own +`getBedrockMaxTokensWarnings` validator (which calls `resolveBedrockMaxTokens` +and reports "invalid output token limit" on failure), distinct from the neutral +`getMaxOutputTokensWarnings` and the OpenRouter `getOpenRouterMaxTokensWarnings` +validators. + ## Secret sanitization `sanitizeDiagnosticText` is the security boundary for anything shown to the user diff --git a/openwiki/operations/telemetry.md b/openwiki/operations/telemetry.md index 84cac4d69..c8439dfaa 100644 --- a/openwiki/operations/telemetry.md +++ b/openwiki/operations/telemetry.md @@ -12,14 +12,13 @@ tags: opt-out, observability, ] -verified: - - by: openwiki/0.3.3 - at: 2026-08-25T02:14:25.283Z sources: - id: openwiki-source-a953060a04ccefcf777de48e resource: repo://src/agent/index.ts - id: openwiki-source-5c43e3fe562cf274dd6a5564 resource: repo://src/cli/cli.tsx + - id: openwiki-source-3fc16f0371ced4d94330f06c + resource: repo://src/cli/commands.ts - id: openwiki-source-106c72a9cb6dd904077fc747 resource: repo://src/cli/runners.ts - id: openwiki-source-c6189f89b3f67d0cbf87739f @@ -54,7 +53,10 @@ sources: resource: repo://test/telemetry/telemetry.test.ts - id: openwiki-source-9ba5e33980ba1f452c6884d4 resource: repo://test/telemetry/with-run-telemetry.test.ts -generated: { by: "openwiki/0.3.3", at: "2026-08-25T02:14:25.283Z" } +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } +verified: + - by: openwiki/0.4.3 + at: 2026-08-29T08:08:01.897Z --- # Telemetry and Diagnostics @@ -108,10 +110,12 @@ only on the run that created it. That `isNew` signal drives the one-time disclosure. `firstRunNoticePending` returns true only on the first run on a machine, and returns false (minting no id) when telemetry is disabled or in CI (`noticeSuppressed`). It never throws. -The CLI (`cli.tsx`) calls it once at startup before any event is sent, and -renders the disclosure copy — single-sourced as `FIRST_RUN_NOTICE_BODY`, -`FIRST_RUN_NOTICE_OPT_OUT`, and `FIRST_RUN_NOTICE_VERIFY` in `config.ts` — as an -Ink box in the interactive TUI or plain framed text on stderr for print mode. +The CLI (`cli.tsx`) calls it once at startup — only when `commandEmitsTelemetry` +is true, i.e. a non-dry-run `init` or `update`, the only commands that emit the +event — and before any event is sent, then renders the disclosure copy — +single-sourced as `FIRST_RUN_NOTICE_BODY`, `FIRST_RUN_NOTICE_OPT_OUT`, and +`FIRST_RUN_NOTICE_VERIFY` in `config.ts` — as an Ink box in the interactive TUI +or plain framed text on stderr for print mode. ## The single run-telemetry boundary diff --git a/openwiki/quickstart.md b/openwiki/quickstart.md index af8b5fbef..f2ea00981 100644 --- a/openwiki/quickstart.md +++ b/openwiki/quickstart.md @@ -5,7 +5,7 @@ description: Entry-point orientation for a coding agent working on the OpenWiki tags: [openwiki, quickstart, cli, orientation, task-routing, deepagents] verified: - by: openwiki/0.4.3 - at: 2026-08-28T03:39:43.412Z + at: 2026-08-29T08:08:01.897Z sources: - id: openwiki-source-8037e2358a2c4f9b2c722a11 resource: repo://AGENTS.md @@ -27,7 +27,9 @@ sources: resource: repo://src/generation/repository-run.ts - id: openwiki-source-080c4525024a9b689e361cbb resource: repo://src/generation/run-state.ts -generated: { by: "openwiki/0.4.3", at: "2026-08-28T03:39:43.412Z" } + - id: openwiki-source-349c953869b025f9d4935470 + resource: repo://src/platform/language.ts +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } --- # OpenWiki Quickstart @@ -86,13 +88,23 @@ into a command, and dispatches: - `integrations` and `mcp` commands go to the host-integration surface (`runIntegrationsCommand` / `runMcpCommand`). -- All other commands run through the native pipeline, which loads environment, - resolves the startup command, and then either prints a startup error, runs - non-interactively in print mode, or renders the interactive Ink `App`. +- All other commands run through `runStandardCommand`, the native pipeline, which + loads environment, resolves the startup command, decides once whether this is + the first run (mints the install id), and then either prints a startup error, + runs non-interactively in print mode, or renders the interactive Ink `App`. The `dev` script points at this same `.tsx` file, so behavior is identical between `pnpm run dev` and the built binary. +> **Behavioral change operators hit first:** an unrecognized `--language` value +> (for example a misspelled locale or a bare language name) is now rejected at +> parse time as a parse error rather than silently generating an English wiki. +> `parseCommand` classifies the flag via `resolveLanguage` and, on an +> `unrecognized` result, returns an `error` command with the user-facing +> message before any run work or persisted state is touched. The full command +> and flag reference lives in +> [CLI Reference](/openwiki/operations/cli-reference.md). + ## Task-routing map Find your task on the left, then read the page on the right. This routes you to diff --git a/openwiki/workflows/claims-reconciliation.md b/openwiki/workflows/claims-reconciliation.md index c1e0ae4a5..d4768cbbd 100644 --- a/openwiki/workflows/claims-reconciliation.md +++ b/openwiki/workflows/claims-reconciliation.md @@ -32,12 +32,14 @@ sources: resource: repo://src/generation/page-jobs.ts - id: openwiki-source-7c5ecb56558cc061dab24f9d resource: repo://src/generation/repository-run.ts + - id: openwiki-source-349c953869b025f9d4935470 + resource: repo://src/platform/language.ts - id: openwiki-source-cfc15a67b4c02c45974332dc resource: repo://test/generation/page-jobs.test.ts -generated: { by: "openwiki/0.4.3", at: "2026-08-28T03:39:43.412Z" } +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } verified: - by: openwiki/0.4.3 - at: 2026-08-28T03:39:43.412Z + at: 2026-08-29T08:08:01.897Z --- # Claims Reconciliation on Update @@ -111,11 +113,20 @@ Preflight classifies each persisted Claim as current, stale, or unresolved. Independently of Claims, `getUpdateNoopStatus` decides whether an update can skip its model invocation. It refuses to skip when there is no previous update git head, when the previous run was recorded as `interrupted`, when the requested -output language differs from the persisted wiki language, when the working tree -has meaningful changes, or when committed changes since the last update touch -source outside `openwiki/` and outside the `openWikiIgnore` boundary. Changes -that only touch generated wiki state or ignored paths do not count as -meaningful. +output language's primary subtag differs from the persisted wiki language's +primary subtag, when the working tree has meaningful changes, or when committed +changes since the last update touch source outside `openwiki/` and outside the +`openWikiIgnore` boundary. Changes that only touch generated wiki state or +ignored paths do not count as meaningful. + +Because the CLI and `begin` reject unrecognized languages at the entry point, +`getUpdateNoopStatus` only ever receives a resolved-or-absent language. It still +runs the request through `requireResolvedLanguage` as a defensive boundary +check — which throws if an unrecognized value somehow slipped past an entry +point — before comparing primary subtags via `getPrimaryLanguageSubtag`. The +comparison is deliberately on the primary subtag (`zh` vs `zh-CN`), so a script +or region variant that keeps the same primary language is not treated as a +meaningful change, while a change of primary language is. The repository run wires these signals together, and **Claims validation precedes update no-op detection**. Before the no-op is even considered, the run diff --git a/openwiki/workflows/onboarding.md b/openwiki/workflows/onboarding.md index 3eaa2efb4..f16576a4b 100644 --- a/openwiki/workflows/onboarding.md +++ b/openwiki/workflows/onboarding.md @@ -18,6 +18,8 @@ sources: resource: repo://src/generation/repository-run.ts - id: openwiki-source-85064d6a188fa56bcc282f11 resource: repo://src/ingestion/code-mode.ts + - id: openwiki-source-349c953869b025f9d4935470 + resource: repo://src/platform/language.ts - id: openwiki-source-28a5ae6f5a5bb7466bd04868 resource: repo://src/setup/credentials/constants.ts - id: openwiki-source-c35800ddf00768a1fa848d13 @@ -28,10 +30,10 @@ sources: resource: repo://src/setup/credentials/use-init-setup.ts - id: openwiki-source-14d4f389b56575bb7afd1310 resource: repo://src/setup/onboarding.ts -generated: { by: "openwiki/0.4.3", at: "2026-08-28T03:39:43.412Z" } +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } verified: - by: openwiki/0.4.3 - at: 2026-08-28T03:39:43.412Z + at: 2026-08-29T08:08:01.897Z --- # Onboarding and Setup @@ -210,6 +212,13 @@ repository runs (`beginRepositoryRun`). It: when it does not already exist, so operator customizations (fork guards, pinned actions, custom steps) are never silently overwritten. +Before `beginRepositoryRun` touches the repository it also validates the +requested `--language` value: an unrecognized tag is rejected up front (via +`resolveLanguage`) rather than silently defaulted to English. This matters for +setup because a wrong language would be persisted in durable run state, and a +later resume refuses to change a started run's language — so the typo could not +be corrected without deleting OpenWiki's own state files. + The generated workflow (`createCodeModeWorkflow`) emits a `workflow_dispatch`- plus-scheduled GitHub Actions job whose `name:` is `OpenWiki Update`, gated by `permissions: contents: write` and `pull-requests: write`. It runs `openwiki code diff --git a/openwiki/workflows/repository-generation.md b/openwiki/workflows/repository-generation.md index 283083b45..27843f0b7 100644 --- a/openwiki/workflows/repository-generation.md +++ b/openwiki/workflows/repository-generation.md @@ -29,14 +29,16 @@ sources: resource: repo://src/generation/run-state.ts - id: openwiki-source-58835b77ce38a0dd1fed8d09 resource: repo://src/integrations/core/session-manager.ts + - id: openwiki-source-349c953869b025f9d4935470 + resource: repo://src/platform/language.ts - id: openwiki-source-ec5a58d1a89689ead79b8150 resource: repo://test/agent/repository-runner.test.ts - id: openwiki-source-77febf5d49f26cc2405db8dd resource: repo://test/generation/repository-run.test.ts -generated: { by: "openwiki/0.4.3", at: "2026-08-28T03:39:43.412Z" } +generated: { by: "openwiki/0.4.3", at: "2026-08-29T08:08:01.897Z" } verified: - by: openwiki/0.4.3 - at: 2026-08-28T03:39:43.412Z + at: 2026-08-29T08:08:01.897Z --- # Repository Generation Lifecycle @@ -244,7 +246,18 @@ runner re-runs a fresh worker for it. ## begin: fresh run, resume, and clean-update no-op -`beginRepositoryRun` first ensures code-mode repository setup, then reads +`beginRepositoryRun` resolves the requested language via `resolveLanguage` +_before anything else_, and an unrecognized language (a malformed tag or a +recognized-but-unregistered one such as `Korean`) is rejected with an +`invalid_input` `RepositoryRunError` before the repository is touched or any run +state is created. This happens first because falling back to English would +persist the wrong language in run state, and resume refuses to change a started +run's language — so a typo could never be corrected without deleting OpenWiki's +own state files. Both the native runner and the host adapter reach `begin` with +an unvalidated language string, so this gate is the single point that protects +both entry points. + +After the language gate, `begin` ensures code-mode repository setup, then reads `openwiki/.run.json`. If a checkpoint exists, it resumes; otherwise it starts fresh. @@ -264,10 +277,15 @@ fresh path fails before commit, an init rollback removes any written state and restores the previous wiki, while a failed update never deletes a successfully written checkpoint. -Resume validates that the caller owns the durable run: a mode mismatch, a -language change, or a different producer actor all raise `conflict`, forcing the -existing run to be resumed on its own terms before anything else changes. Resume -also carries forward the caller's current `metadataModel` and planning context. +Resume validates that the caller owns the durable run: a mode mismatch raises +`conflict`, and a requested language change is refused with `conflict` by +`requireResolvedLanguage`, which compares the resolved language against the +checkpoint's `state.language`. A different producer actor is _not_ a conflict — +resume carries the new actor forward along with the caller's current +`metadataModel` and planning context, so work can continue across producers +(everything except the original producer identity is updated). Because the +language gate ran first, an unrecognized resume language is already rejected at +the top of `begin`, so the interrupted run is never mutated by a typo. ## Resume on the same checkout and source-fingerprint invalidation @@ -348,7 +366,7 @@ retries. Correctable input rejections (bad plan or bad Claim payload) are returned to workers as failed tool results so their loop stays active, while `invalid_state` and `conflict` protect the durable invariants: submit in phase order, submit only the current pending job, never finish with pending jobs or -without covering skipped-job snapshots, and never resume a run owned by a -different mode, language, or producer. Source drift detected at finish time is +without covering skipped-job snapshots, and never resume a run with a +mismatched mode or a requested language change. Source drift detected at finish time is not a failure: the wiki is finalized, `interrupted` metadata is persisted, and `sourceChanged: true` tells the caller a later update is due.