@openora/create 0.4.1-canary.294 → 0.4.1-canary.296
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/generated/core-version.d.ts +1 -1
- package/dist/generated/core-version.js +1 -1
- package/package.json +2 -2
- package/template/README.md.tpl +2 -1
- package/template/__dot__rulesync/commands/start.md +1 -1
- package/template/__dot__rulesync/hooks/guard-subagent.mjs +1 -1
- package/template/__dot__rulesync/rules/overview.md +1 -1
- package/template/__dot__rulesync/skills/create-plugin/SKILL.md.tpl +1 -1
- package/template/__dot__rulesync/skills/create-pr/SKILL.md.tpl +3 -3
- package/template/__dot__rulesync/skills/ship/SKILL.md.tpl +149 -0
- package/template/__dot__rulesync/skills/{add-feature → ship}/handoff.md.tpl +3 -3
- package/template/__dot__rulesync/skills/ship/watch-pr.mjs +168 -0
- package/template/__dot__rulesync/subagents/builder.md.tpl +12 -13
- package/template/__dot__rulesync/subagents/debugger.md.tpl +2 -2
- package/template/__dot__rulesync/subagents/planner.md.tpl +39 -0
- package/template/__dot__rulesync/subagents/{qa.md.tpl → tester.md.tpl} +22 -20
- package/template/docs/agents/forge.md.tpl +1 -1
- package/template/docs/agents/issue-tracker.md.tpl +1 -0
- package/template/docs/standards/git-delivery.md +1 -1
- package/template/tools/sync-agents.mjs +71 -1
- package/template/__dot__rulesync/skills/add-feature/SKILL.md.tpl +0 -97
package/dist/.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/generated/core-version.ts","../src/render.ts","../src/index.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/dispatcher1-wrapper.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/ffi.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/path/posix.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/path/win32.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/quic.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/stream/iter.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/test/reporters.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/util/types.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/vfs.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/index.d.ts"],"fileIdsList":[[64,126,127,129,137,142,145,147,148,149,161],[64,128,129,137,142,145,147,148,149,161],[129,137,142,145,147,148,149,161],[64,129,137,142,145,147,148,149,161,170],[64,129,130,135,137,140,142,145,147,148,149,151,161,166,179],[64,129,130,131,137,140,142,145,147,148,149,161],[64,129,132,137,142,145,147,148,149,161,180],[64,129,133,134,137,142,145,147,148,149,152,161],[64,129,134,137,142,145,147,148,149,161,166,176],[64,129,135,137,140,142,145,147,148,149,151,161],[64,128,129,136,137,142,145,147,148,149,161],[64,129,137,138,142,145,147,148,149,161],[64,129,137,139,140,142,145,147,148,149,161],[64,128,129,137,140,142,145,147,148,149,161],[64,129,137,142,145,147,148,149,161],[64,129,137,140,142,143,145,147,148,149,161,166,179],[64,129,137,140,142,143,145,147,148,149,161,168,170],[64,116,129,137,140,142,144,145,147,148,149,151,161,166,179],[64,129,137,140,142,144,145,147,148,149,151,161,166,176,179],[64,129,137,142,144,145,146,147,148,149,161,166,176,179],[63,64,65,66,67,68,69,70,71,72,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188],[64,129,137,140,142,145,147,148,149,161],[64,129,137,142,145,147,149,161],[64,129,137,142,145,147,148,149,150,161,179],[64,129,137,140,142,145,147,148,149,151,161,166],[64,129,137,142,145,147,148,149,152,161],[64,129,137,142,145,147,148,149,153,161],[64,129,137,140,142,145,147,148,149,156,161],[64,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187],[64,129,137,142,145,147,148,149,158,161],[64,129,137,142,145,147,148,149,159,161],[64,129,134,137,142,143,145,147,148,149,151,161,168,176],[64,129,137,140,142,145,147,148,149,161,162],[64,129,137,142,145,147,148,149,161,163,180,184],[64,129,137,140,142,145,147,148,149,161,166,168,169,170],[64,129,137,142,145,147,148,149,161,167,170],[64,129,137,140,142,145,147,148,149,161,166,168],[64,129,137,140,142,145,147,148,149,161,166,169,170],[64,129,137,142,145,147,148,149,161,170,180],[64,129,137,142,145,147,148,149,161,171],[64,126,129,137,142,145,147,148,149,161,166,173,179],[64,129,137,142,145,147,148,149,161,166,172],[64,129,137,140,142,145,147,148,149,161,174,175],[64,129,137,142,145,147,148,149,161,174,175],[64,129,134,137,142,145,147,148,149,151,161,166,176],[64,129,137,142,145,147,148,149,161,177],[64,129,137,142,145,147,148,149,151,161,178],[64,129,137,142,144,145,147,148,149,159,161,179],[64,129,137,142,145,147,148,149,161,180,181],[64,129,134,137,142,145,147,148,149,161,181],[64,129,137,142,145,147,148,149,161,166,182],[64,129,137,142,143,145,147,148,149,161],[64,129,137,142,145,147,148,149,150,161,184],[64,129,137,142,145,147,148,149,161,185],[64,129,132,137,142,145,147,148,149,161],[64,129,134,137,142,145,147,148,149,161],[64,129,137,142,145,147,148,149,161,180],[64,116,129,137,142,145,147,148,149,161],[64,129,137,142,145,147,148,149,161,179],[64,129,137,142,145,147,148,149,161,186],[64,129,137,142,145,147,148,149,156,161],[64,129,137,142,145,147,148,149,161,175],[64,116,129,137,140,142,143,145,147,148,149,151,156,161,166,170,179,182,184,186],[64,129,137,142,145,147,148,149,161,166,187],[64,129,137,142,145,147,148,149,161,168,188],[64,79,82,85,86,129,137,142,145,147,148,149,161,179],[64,82,129,137,142,145,147,148,149,161,166,179],[64,82,86,129,137,142,145,147,148,149,161,179],[64,129,137,142,145,147,148,149,161,166],[64,76,129,137,142,145,147,148,149,161],[64,80,129,137,142,145,147,148,149,161],[64,78,79,82,129,137,142,145,147,148,149,161,179],[64,129,137,142,145,147,148,149,151,161,176],[64,129,137,142,145,147,148,149,161,189],[64,76,129,137,142,145,147,148,149,161,189],[64,78,82,129,137,142,145,147,148,149,151,161,179],[64,73,74,75,77,81,129,137,140,142,145,147,148,149,161,166,179],[64,82,129,137,142,145,147,148,149,161],[64,82,91,100,129,137,142,145,147,148,149,161],[64,74,80,129,137,142,145,147,148,149,161],[64,82,110,111,129,137,142,145,147,148,149,161],[64,74,77,82,129,137,142,145,147,148,149,161,170,179,189],[64,78,82,129,137,142,145,147,148,149,161,179],[64,73,129,137,142,145,147,148,149,161],[64,76,77,78,80,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,111,112,113,114,115,129,137,142,145,147,148,149,161],[64,82,103,106,129,137,142,145,147,148,149,161],[64,82,91,93,94,129,137,142,145,147,148,149,161],[64,80,82,93,95,129,137,142,145,147,148,149,161],[64,81,129,137,142,145,147,148,149,161],[64,74,76,82,129,137,142,145,147,148,149,161],[64,82,86,93,95,129,137,142,145,147,148,149,161],[64,86,129,137,142,145,147,148,149,161],[64,80,82,85,129,137,142,145,147,148,149,161,179],[64,74,78,82,91,129,137,142,145,147,148,149,161],[64,82,103,129,137,142,145,147,148,149,161],[64,95,129,137,142,145,147,148,149,161],[64,74,78,82,86,129,137,142,145,147,148,149,161],[64,76,82,110,129,137,142,145,147,148,149,161,170,186,189],[60,61,64,129,134,137,142,145,147,148,149,153,157,161,179]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fdc0be05d9dba3ee82ebd69cf21b09bd7d6d937271a8c398f5ab301b994fca6","signature":"ec307b5b00cfccc9805ad9249877eaca892dbec98199a14cf95b696cc26db7b5","impliedFormat":99},{"version":"22a27f7f73faeb4972f49f9c914d6fcb2ea8836a1e5c0d3002d47282f054279f","signature":"1b3ce48384a1da896e5ce0c97c1bca1e45be40f4bca3b008bf84183dd1d52f45","impliedFormat":99},{"version":"3ca300aa2ef03d3483b59d66ee22c3b6d6e67e2f28b5cf7083f03c33d7fe6adc","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"21d7fab00c101ddf754b392e11534e6b20c6bda269b2ccbcdf3453cbe21d8a39","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"d3c85d4dde1a4918009e37426ee4a940cbbd4100e2e74d03e2de0d50a77bb488","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"60e3ba4b2d24548107060e5d13bffafbbbaa53d001c07bbe40386deda569b5e8","impliedFormat":1},{"version":"a712be2c8cbe0154bd17d1d7bff503d7c04331e0745eb9eea3d303e0e5d9401e","impliedFormat":1},{"version":"25bd6ae1b97ea991433337310fc406cc7c9f271b67b7c79dd24eee384759f3d4","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"4ca7fb8f6018ea836b1ad24f67d5e7c2cf7410af7462e0ccc90b012944f5d7ae","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"57354d2f022ed64ede57b2e052306dd076a138b551abc7d30ef5e6718ce2f76a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"358f74dc35927dc88ea86dd201a2b98e701c281615e6b30a4c153eb0bb90ef71","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"706abfbafe0ed5f685357375e89bbf48879549ea1772185d77d15f587c5c9400","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"013ff793053d33a15be4614efdd6c50247bbf0b26d6bc58ba338622a7441b543","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"279d0cc1a72879918854265c3405369aa2d4d23509b8694ea102995b298cc5e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"575aa163c4c32e5b82e0e99b1f9f80806e1d78bfa259706e05139251c022277b","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fb21326854faaa31ef02c9d51629fb6acedacb9396e74bf22ff8409441ea9ae","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"9019e48ace02a7f39315d84261f4a3dd23b7a3b1f6584e694001ac93971791b7","impliedFormat":1},{"version":"2f78692a85ada51c8f0988184d34d28436c1040e8ccf0758ba70d4b32b9776ad","impliedFormat":1},{"version":"97581dc7099ef3d844c83706d53a7ecf895c0e867fbf6b9dc035bb3080f677bd","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f487e411f9657df0e76572e500c1209b8fe95ee3b4cc6e6e7913c15f56207d","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"ad50512520720d10294c629cb4e2df23891c3fcbeaca00fbfb9e6bbea65f3dd6","impliedFormat":1},{"version":"189769511b45c93b23ba76069f7701d3b631cfbedc1eb94c7753486c78736f78","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"961dec547748827cb6b45f6fdc66273f7bacd9c73103c6779f070f2fd07f23f9","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"d251cda16f3f6a3e07f07c9e6e823ef6c583c63f653eb8777dafa749a78298e3","impliedFormat":1},{"version":"361939136b496a38b3e6b7be750bbb6998ef289bb8dd304c673138542ca16137","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"89e2568ebc2ec1e4149384b105e80e8bbf41eb4d711547f1121f4f628028de96","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"7286e4e5f80c0b1ab16addbdbbc9dd47fbae1c42034189261177b84d745cde3b","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"cd2a656ba1d250c2002190b683e3826bf4362b6919450bc0f9bbf5612ebad837","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"3e221ff0522e6ff95aa74a5211126aaf4d7e85ed8c8ff19290d591ad4bef988f","impliedFormat":1},{"version":"7da83f6429c6298ebf2be43d296b56ecfc94c9c28f5471b2f23b87545b914cea","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"751048d4aa67e20e5ecd2692340ea0d19bae42a20cc651d6f56d095e411ce3ac","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"fb12cb2de38cc8b89e38ece1014b4ae1047cd89b8dd248c64adc1c53c358ca02","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"4a8c8fd951d9fd9e0775f0aae8ed1f8b528204e24a2600bea3a1228ea83de52c","impliedFormat":1},{"version":"5b9cc0c724a8ebc7a873ab8e73c20b2416cef04b9e9d7f95ef1fa0fdcd4e0ec8","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"80a4b7023a2cc9f14d3f2e4635d6615ab3eff4b5b3630f62a8e73992fdd8cdb9","impliedFormat":1},{"version":"7414ec88dbb6d1b4d07a6ffbb3592e56359343ddfd5b0b825721d736b04ab2b6","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1}],"root":[[60,62]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":100,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[126,1],[127,1],[128,2],[64,3],[129,4],[130,5],[131,6],[132,7],[133,8],[134,9],[135,10],[136,11],[137,12],[138,12],[139,13],[140,14],[141,15],[142,16],[143,17],[65,15],[63,15],[144,18],[145,19],[146,20],[189,21],[147,22],[148,23],[149,22],[150,24],[151,25],[152,26],[153,27],[154,27],[155,27],[156,28],[157,29],[158,30],[159,31],[160,32],[161,33],[162,33],[163,34],[164,15],[165,15],[166,35],[167,36],[168,37],[169,38],[170,39],[171,40],[172,41],[173,42],[174,43],[175,44],[176,45],[177,46],[178,47],[179,48],[180,49],[181,50],[182,51],[183,52],[184,53],[185,54],[66,22],[67,15],[68,55],[69,56],[70,15],[71,57],[72,15],[117,58],[118,59],[119,60],[120,60],[121,61],[122,15],[123,4],[124,62],[125,59],[186,63],[187,64],[188,65],[58,15],[59,15],[11,15],[10,15],[2,15],[12,15],[13,15],[14,15],[15,15],[16,15],[17,15],[18,15],[19,15],[3,15],[20,15],[21,15],[4,15],[22,15],[26,15],[23,15],[24,15],[25,15],[27,15],[28,15],[29,15],[5,15],[30,15],[31,15],[32,15],[33,15],[6,15],[37,15],[34,15],[35,15],[36,15],[38,15],[7,15],[39,15],[44,15],[45,15],[40,15],[41,15],[42,15],[43,15],[8,15],[49,15],[46,15],[47,15],[48,15],[50,15],[9,15],[51,15],[52,15],[53,15],[55,15],[54,15],[56,15],[1,15],[57,15],[91,66],[105,67],[88,68],[106,69],[115,70],[79,71],[80,72],[78,73],[114,74],[109,75],[113,76],[82,77],[92,78],[102,79],[81,80],[112,81],[76,82],[77,75],[83,78],[84,15],[90,83],[87,78],[74,84],[116,85],[107,86],[95,87],[94,78],[96,88],[99,89],[93,90],[97,91],[110,74],[85,92],[86,93],[100,94],[75,69],[104,95],[103,78],[89,93],[98,96],[101,97],[108,15],[73,15],[111,98],[60,15],[62,99],[61,27]],"latestChangedDtsFile":"./generated/core-version.d.ts","version":"6.0.3"}
|
|
1
|
+
{"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/generated/core-version.ts","../src/render.ts","../src/index.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/dispatcher1-wrapper.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/ffi.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/path/posix.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/path/win32.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/quic.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/stream/iter.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/test/reporters.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/util/types.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/vfs.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/.pnpm/@types+node@26.6.5/node_modules/@types/node/index.d.ts"],"fileIdsList":[[64,126,127,129,137,142,145,147,148,149,161],[64,128,129,137,142,145,147,148,149,161],[129,137,142,145,147,148,149,161],[64,129,137,142,145,147,148,149,161,170],[64,129,130,135,137,140,142,145,147,148,149,151,161,166,179],[64,129,130,131,137,140,142,145,147,148,149,161],[64,129,132,137,142,145,147,148,149,161,180],[64,129,133,134,137,142,145,147,148,149,152,161],[64,129,134,137,142,145,147,148,149,161,166,176],[64,129,135,137,140,142,145,147,148,149,151,161],[64,128,129,136,137,142,145,147,148,149,161],[64,129,137,138,142,145,147,148,149,161],[64,129,137,139,140,142,145,147,148,149,161],[64,128,129,137,140,142,145,147,148,149,161],[64,129,137,142,145,147,148,149,161],[64,129,137,140,142,143,145,147,148,149,161,166,179],[64,129,137,140,142,143,145,147,148,149,161,168,170],[64,116,129,137,140,142,144,145,147,148,149,151,161,166,179],[64,129,137,140,142,144,145,147,148,149,151,161,166,176,179],[64,129,137,142,144,145,146,147,148,149,161,166,176,179],[63,64,65,66,67,68,69,70,71,72,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188],[64,129,137,140,142,145,147,148,149,161],[64,129,137,142,145,147,149,161],[64,129,137,142,145,147,148,149,150,161,179],[64,129,137,140,142,145,147,148,149,151,161,166],[64,129,137,142,145,147,148,149,152,161],[64,129,137,142,145,147,148,149,153,161],[64,129,137,140,142,145,147,148,149,156,161],[64,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187],[64,129,137,142,145,147,148,149,158,161],[64,129,137,142,145,147,148,149,159,161],[64,129,134,137,142,143,145,147,148,149,151,161,168,176],[64,129,137,140,142,145,147,148,149,161,162],[64,129,137,142,145,147,148,149,161,163,180,184],[64,129,137,140,142,145,147,148,149,161,166,168,169,170],[64,129,137,142,145,147,148,149,161,167,170],[64,129,137,140,142,145,147,148,149,161,166,168],[64,129,137,140,142,145,147,148,149,161,166,169,170],[64,129,137,142,145,147,148,149,161,170,180],[64,129,137,142,145,147,148,149,161,171],[64,126,129,137,142,145,147,148,149,161,166,173,179],[64,129,137,142,145,147,148,149,161,166,172],[64,129,137,140,142,145,147,148,149,161,174,175],[64,129,137,142,145,147,148,149,161,174,175],[64,129,134,137,142,145,147,148,149,151,161,166,176],[64,129,137,142,145,147,148,149,161,177],[64,129,137,142,145,147,148,149,151,161,178],[64,129,137,142,144,145,147,148,149,159,161,179],[64,129,137,142,145,147,148,149,161,180,181],[64,129,134,137,142,145,147,148,149,161,181],[64,129,137,142,145,147,148,149,161,166,182],[64,129,137,142,143,145,147,148,149,161],[64,129,137,142,145,147,148,149,150,161,184],[64,129,137,142,145,147,148,149,161,185],[64,129,132,137,142,145,147,148,149,161],[64,129,134,137,142,145,147,148,149,161],[64,129,137,142,145,147,148,149,161,180],[64,116,129,137,142,145,147,148,149,161],[64,129,137,142,145,147,148,149,161,179],[64,129,137,142,145,147,148,149,161,186],[64,129,137,142,145,147,148,149,156,161],[64,129,137,142,145,147,148,149,161,175],[64,116,129,137,140,142,143,145,147,148,149,151,156,161,166,170,179,182,184,186],[64,129,137,142,145,147,148,149,161,166,187],[64,129,137,142,145,147,148,149,161,168,188],[64,79,82,85,86,129,137,142,145,147,148,149,161,179],[64,82,129,137,142,145,147,148,149,161,166,179],[64,82,86,129,137,142,145,147,148,149,161,179],[64,129,137,142,145,147,148,149,161,166],[64,76,129,137,142,145,147,148,149,161],[64,80,129,137,142,145,147,148,149,161],[64,78,79,82,129,137,142,145,147,148,149,161,179],[64,129,137,142,145,147,148,149,151,161,176],[64,129,137,142,145,147,148,149,161,189],[64,76,129,137,142,145,147,148,149,161,189],[64,78,82,129,137,142,145,147,148,149,151,161,179],[64,73,74,75,77,81,129,137,140,142,145,147,148,149,161,166,179],[64,82,129,137,142,145,147,148,149,161],[64,82,91,100,129,137,142,145,147,148,149,161],[64,74,80,129,137,142,145,147,148,149,161],[64,82,110,111,129,137,142,145,147,148,149,161],[64,74,77,82,129,137,142,145,147,148,149,161,170,179,189],[64,78,82,129,137,142,145,147,148,149,161,179],[64,73,129,137,142,145,147,148,149,161],[64,76,77,78,80,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,111,112,113,114,115,129,137,142,145,147,148,149,161],[64,82,103,106,129,137,142,145,147,148,149,161],[64,82,91,93,94,129,137,142,145,147,148,149,161],[64,80,82,93,95,129,137,142,145,147,148,149,161],[64,81,129,137,142,145,147,148,149,161],[64,74,76,82,129,137,142,145,147,148,149,161],[64,82,86,93,95,129,137,142,145,147,148,149,161],[64,86,129,137,142,145,147,148,149,161],[64,80,82,85,129,137,142,145,147,148,149,161,179],[64,74,78,82,91,129,137,142,145,147,148,149,161],[64,82,103,129,137,142,145,147,148,149,161],[64,95,129,137,142,145,147,148,149,161],[64,74,78,82,86,129,137,142,145,147,148,149,161],[64,76,82,110,129,137,142,145,147,148,149,161,170,186,189],[60,61,64,129,134,137,142,145,147,148,149,153,157,161,179]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3caf423a7d25127fd7a5df32d966b057dbf953a5eb040d5620be26c97a3099","signature":"9465aa937b5c13fff6e41abef412202f0b0793e4dd9b24444d4be718a67c14ec","impliedFormat":99},{"version":"22a27f7f73faeb4972f49f9c914d6fcb2ea8836a1e5c0d3002d47282f054279f","signature":"1b3ce48384a1da896e5ce0c97c1bca1e45be40f4bca3b008bf84183dd1d52f45","impliedFormat":99},{"version":"3ca300aa2ef03d3483b59d66ee22c3b6d6e67e2f28b5cf7083f03c33d7fe6adc","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"21d7fab00c101ddf754b392e11534e6b20c6bda269b2ccbcdf3453cbe21d8a39","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"d3c85d4dde1a4918009e37426ee4a940cbbd4100e2e74d03e2de0d50a77bb488","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"60e3ba4b2d24548107060e5d13bffafbbbaa53d001c07bbe40386deda569b5e8","impliedFormat":1},{"version":"a712be2c8cbe0154bd17d1d7bff503d7c04331e0745eb9eea3d303e0e5d9401e","impliedFormat":1},{"version":"25bd6ae1b97ea991433337310fc406cc7c9f271b67b7c79dd24eee384759f3d4","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"4ca7fb8f6018ea836b1ad24f67d5e7c2cf7410af7462e0ccc90b012944f5d7ae","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"57354d2f022ed64ede57b2e052306dd076a138b551abc7d30ef5e6718ce2f76a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"358f74dc35927dc88ea86dd201a2b98e701c281615e6b30a4c153eb0bb90ef71","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"706abfbafe0ed5f685357375e89bbf48879549ea1772185d77d15f587c5c9400","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"013ff793053d33a15be4614efdd6c50247bbf0b26d6bc58ba338622a7441b543","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"279d0cc1a72879918854265c3405369aa2d4d23509b8694ea102995b298cc5e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"575aa163c4c32e5b82e0e99b1f9f80806e1d78bfa259706e05139251c022277b","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fb21326854faaa31ef02c9d51629fb6acedacb9396e74bf22ff8409441ea9ae","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"9019e48ace02a7f39315d84261f4a3dd23b7a3b1f6584e694001ac93971791b7","impliedFormat":1},{"version":"2f78692a85ada51c8f0988184d34d28436c1040e8ccf0758ba70d4b32b9776ad","impliedFormat":1},{"version":"97581dc7099ef3d844c83706d53a7ecf895c0e867fbf6b9dc035bb3080f677bd","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f487e411f9657df0e76572e500c1209b8fe95ee3b4cc6e6e7913c15f56207d","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"ad50512520720d10294c629cb4e2df23891c3fcbeaca00fbfb9e6bbea65f3dd6","impliedFormat":1},{"version":"189769511b45c93b23ba76069f7701d3b631cfbedc1eb94c7753486c78736f78","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"961dec547748827cb6b45f6fdc66273f7bacd9c73103c6779f070f2fd07f23f9","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"d251cda16f3f6a3e07f07c9e6e823ef6c583c63f653eb8777dafa749a78298e3","impliedFormat":1},{"version":"361939136b496a38b3e6b7be750bbb6998ef289bb8dd304c673138542ca16137","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"89e2568ebc2ec1e4149384b105e80e8bbf41eb4d711547f1121f4f628028de96","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"7286e4e5f80c0b1ab16addbdbbc9dd47fbae1c42034189261177b84d745cde3b","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"cd2a656ba1d250c2002190b683e3826bf4362b6919450bc0f9bbf5612ebad837","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"3e221ff0522e6ff95aa74a5211126aaf4d7e85ed8c8ff19290d591ad4bef988f","impliedFormat":1},{"version":"7da83f6429c6298ebf2be43d296b56ecfc94c9c28f5471b2f23b87545b914cea","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"751048d4aa67e20e5ecd2692340ea0d19bae42a20cc651d6f56d095e411ce3ac","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"fb12cb2de38cc8b89e38ece1014b4ae1047cd89b8dd248c64adc1c53c358ca02","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"4a8c8fd951d9fd9e0775f0aae8ed1f8b528204e24a2600bea3a1228ea83de52c","impliedFormat":1},{"version":"5b9cc0c724a8ebc7a873ab8e73c20b2416cef04b9e9d7f95ef1fa0fdcd4e0ec8","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"80a4b7023a2cc9f14d3f2e4635d6615ab3eff4b5b3630f62a8e73992fdd8cdb9","impliedFormat":1},{"version":"7414ec88dbb6d1b4d07a6ffbb3592e56359343ddfd5b0b825721d736b04ab2b6","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1}],"root":[[60,62]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":100,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[126,1],[127,1],[128,2],[64,3],[129,4],[130,5],[131,6],[132,7],[133,8],[134,9],[135,10],[136,11],[137,12],[138,12],[139,13],[140,14],[141,15],[142,16],[143,17],[65,15],[63,15],[144,18],[145,19],[146,20],[189,21],[147,22],[148,23],[149,22],[150,24],[151,25],[152,26],[153,27],[154,27],[155,27],[156,28],[157,29],[158,30],[159,31],[160,32],[161,33],[162,33],[163,34],[164,15],[165,15],[166,35],[167,36],[168,37],[169,38],[170,39],[171,40],[172,41],[173,42],[174,43],[175,44],[176,45],[177,46],[178,47],[179,48],[180,49],[181,50],[182,51],[183,52],[184,53],[185,54],[66,22],[67,15],[68,55],[69,56],[70,15],[71,57],[72,15],[117,58],[118,59],[119,60],[120,60],[121,61],[122,15],[123,4],[124,62],[125,59],[186,63],[187,64],[188,65],[58,15],[59,15],[11,15],[10,15],[2,15],[12,15],[13,15],[14,15],[15,15],[16,15],[17,15],[18,15],[19,15],[3,15],[20,15],[21,15],[4,15],[22,15],[26,15],[23,15],[24,15],[25,15],[27,15],[28,15],[29,15],[5,15],[30,15],[31,15],[32,15],[33,15],[6,15],[37,15],[34,15],[35,15],[36,15],[38,15],[7,15],[39,15],[44,15],[45,15],[40,15],[41,15],[42,15],[43,15],[8,15],[49,15],[46,15],[47,15],[48,15],[50,15],[9,15],[51,15],[52,15],[53,15],[55,15],[54,15],[56,15],[1,15],[57,15],[91,66],[105,67],[88,68],[106,69],[115,70],[79,71],[80,72],[78,73],[114,74],[109,75],[113,76],[82,77],[92,78],[102,79],[81,80],[112,81],[76,82],[77,75],[83,78],[84,15],[90,83],[87,78],[74,84],[116,85],[107,86],[95,87],[94,78],[96,88],[99,89],[93,90],[97,91],[110,74],[85,92],[86,93],[100,94],[75,69],[104,95],[103,78],[89,93],[98,96],[101,97],[108,15],[73,15],[111,98],[60,15],[62,99],[61,27]],"latestChangedDtsFile":"./generated/core-version.d.ts","version":"6.0.3"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CORE_VERSION = "^0.4.1-canary.
|
|
1
|
+
export declare const CORE_VERSION = "^0.4.1-canary.296";
|
|
2
2
|
//# sourceMappingURL=core-version.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const CORE_VERSION = "^0.4.1-canary.
|
|
1
|
+
export const CORE_VERSION = "^0.4.1-canary.296";
|
|
2
2
|
//# sourceMappingURL=core-version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openora/create",
|
|
3
|
-
"version": "0.4.1-canary.
|
|
3
|
+
"version": "0.4.1-canary.296",
|
|
4
4
|
"description": "npm initializer that scaffolds a headless Openora consumer app from the published @openora/* packages - no OSS checkout required",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-native",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@types/node": "26.6.5",
|
|
32
32
|
"typescript": "6.0.3",
|
|
33
33
|
"vitest": "4.1.11",
|
|
34
|
-
"@openora/core": "0.4.1-canary.
|
|
34
|
+
"@openora/core": "0.4.1-canary.296"
|
|
35
35
|
},
|
|
36
36
|
"engines": {
|
|
37
37
|
"node": ">=26"
|
package/template/README.md.tpl
CHANGED
|
@@ -57,9 +57,10 @@ a DI token wins).
|
|
|
57
57
|
|
|
58
58
|
`.claude/agents/` ships agents scoped to this repo, generated from `.rulesync/subagents/`:
|
|
59
59
|
|
|
60
|
+
- `planner` - plan a ticket: the blocking questions, or a plan with risk-driven test cases
|
|
60
61
|
- `builder` - configure extensions, swap adapters, write overlays, customize UI
|
|
61
62
|
- `expert` - turn product asks into requirements + acceptance criteria
|
|
62
|
-
- `
|
|
63
|
+
- `tester` - attack a built change against the running stack, return a verdict table with screenshots, add the tests, triage bugs
|
|
63
64
|
- `debugger`, `deployer`, `quality-reviewer`, `security-reviewer`, `compliance-reviewer` - root-cause, packaging, review
|
|
64
65
|
|
|
65
66
|
The `oss` MCP server (`.mcp.json`) gives them read-only inspection of the platform surface.
|
|
@@ -6,6 +6,6 @@ description: First-run onboarding for this consumer igaming repo. Interview the
|
|
|
6
6
|
|
|
7
7
|
Call the `start` MCP tool (server `oss`) with no arguments, then follow the script it returns exactly. If the user already described what they want to build, pass it as the `ask` argument.
|
|
8
8
|
|
|
9
|
-
The returned script will have you: confirm the MCP server is connected, run a thorough requirements interview, call `enhance-intent`, then delegate the implementation to the `expert`, `builder`, and `
|
|
9
|
+
The returned script will have you: confirm the MCP server is connected, run a thorough requirements interview, call `enhance-intent`, then delegate the implementation to the `expert`, `builder`, and `tester` agents (via the Task tool). You gather requirements and orchestrate; you do not write feature code yourself, and you never modify `@openora/*` core.
|
|
10
10
|
|
|
11
11
|
If the `start` tool is not available, the `oss` MCP server is not connected - tell the user to approve the `oss` server declared in `.mcp.json` (or run the repo's MCP setup script if it ships one) and restart the editor.
|
|
@@ -25,7 +25,7 @@ const text = `${ti.description ?? ''}\n${ti.prompt ?? ''}`.toLowerCase();
|
|
|
25
25
|
// High-signal phrase -> the roster agent that owns it. Keep each pattern SPECIFIC;
|
|
26
26
|
// err toward missing a case over false-blocking a generic task.
|
|
27
27
|
const ROUTES = [
|
|
28
|
-
{ agent: '
|
|
28
|
+
{ agent: 'tester', re: /\b(playwright|e2e test|end-to-end test|e2e coverage)\b/ },
|
|
29
29
|
{
|
|
30
30
|
agent: 'debugger',
|
|
31
31
|
re: /\b(build (failure|error)|turbopack|tsc error|module resolution|runtime error|stack trace)\b/,
|
|
@@ -25,7 +25,7 @@ Most of `.rulesync/` (skills, subagents, commands, hooks, the shared rules) and
|
|
|
25
25
|
## How you work here
|
|
26
26
|
|
|
27
27
|
- Before acting on a non-trivial request, and before delegating, run the `enhance-prompt` skill on the raw ask. Skip it only when the ask is already precise. Subagents act on the brief they are handed; they do not re-enhance it.
|
|
28
|
-
- Your human-facing job is gathering requirements until a stranger could build from them; the `start` / `enhance-intent` MCP tools give the checklist. Then delegate to the subagents (`expert` -> `builder` -> `
|
|
28
|
+
- Your human-facing job is gathering requirements until a stranger could build from them; the `start` / `enhance-intent` MCP tools give the checklist. Then delegate to the subagents (`expert` -> `builder` -> `tester`) and return to the user only for decisions they alone can make.
|
|
29
29
|
- A task that names a ticket key starts by reading the whole ticket per `docs/agents/issue-tracker.md`. Never write to the tracker unless the user asks for that exact write.
|
|
30
30
|
- `pnpm verify` on the committed tree is the gate before a merge/pull request; the `guard-mr` hook refuses to open one until it has passed on HEAD.
|
|
31
31
|
|
|
@@ -22,7 +22,7 @@ The platform is extended from the **outside only** (overlay plugin / adapter reb
|
|
|
22
22
|
| Mount a react-sdk page on a route | page | `pnpm gen page <route>` |
|
|
23
23
|
| Add one route to an existing add-on/overlay | route | `/scaffold-route <add-on> <METHOD> <path>` |
|
|
24
24
|
|
|
25
|
-
If the behavior genuinely cannot be expressed from the outside, STOP - it's an OSS-core change. Hand off via the `
|
|
25
|
+
If the behavior genuinely cannot be expressed from the outside, STOP - it's an OSS-core change. Hand off via the `ship` skill's `handoff.md`. Never patch `{{ossDir}}`.
|
|
26
26
|
|
|
27
27
|
## 2. Ground first
|
|
28
28
|
|
|
@@ -15,7 +15,7 @@ description: Commit, push, and open a pull request on this repo's forge, targeti
|
|
|
15
15
|
3. **Scope the commit.** `git status -s`. Commit ONLY changes that belong to this unit of work. If unrelated/pre-existing edits are present, do NOT bundle them - stage your files explicitly and tell the user what you left out. Never `git add -A` blindly when foreign changes are in the tree.
|
|
16
16
|
4. **Commit.** Conventional-commit message (`feat:`, `fix:`, `docs:`, `refactor:`, `chore:`); the scope is a commitlint-enum package or app, never the ticket key; for ticket work the key goes at the END of the subject (e.g. `feat(web): add deposit limits ({{trackerKey}}-123)`). No "Co-Authored-By" / "Generated with" trailers.
|
|
17
17
|
5. **Verify the commit.** Run `pnpm verify` on the committed, clean tree: it is the pre-MR gate and records the verified commit. The `guard-mr` hook refuses to open the pull request until that record matches HEAD. Don't push a red tree.
|
|
18
|
-
6. **Push** the current branch - but STOP and get an explicit per-action "yes push" from the user FIRST. Report the commit SHA, then ask. Invoking this skill is NOT push authorization. Pushing to a shared/env branch (`{{mrTarget}}`, `stage`, `prod`) without that explicit yes is forbidden. Only after the yes: `git push -u origin <current>`.
|
|
18
|
+
6. **Push** the current branch - but STOP and get an explicit per-action "yes push" from the user FIRST. The one exception: run by `ship` without `--ask`, the `/ship` invocation is that yes for its ticket branch only. Report the commit SHA, then ask. Invoking this skill is NOT push authorization. Pushing to a shared/env branch (`{{mrTarget}}`, `stage`, `prod`) without that explicit yes is forbidden. Only after the yes: `git push -u origin <current>`.
|
|
19
19
|
7. **Open the pull request** using the command in `docs/agents/forge.md` (only after the push is confirmed and done). Reuse an open request for the same source -> target instead of creating a duplicate, and never delete a long-lived branch on merge.
|
|
20
20
|
8. **Report** the pull-request URL back to the user, and the OSS PR URL when paired.
|
|
21
21
|
|
|
@@ -25,14 +25,14 @@ description: Commit, push, and open a pull request on this repo's forge, targeti
|
|
|
25
25
|
- Add short, reproducible local test steps for the changed behavior (for example, `pnpm dev` then the relevant URLs or user flow).
|
|
26
26
|
- Close the ticket by key at the end: `Closes <KEY>-n` if this PR finishes it, else `Refs <KEY>-n` (see `docs/agents/issue-tracker.md`).
|
|
27
27
|
- Do not include a generic verification-command list: CI already reports those checks.
|
|
28
|
-
- **Attach the manual-verification evidence.** The screenshots are what a reviewer reads as proof of a user-visible change: one per changed screen, the before/after pair on a fix. Upload each image to the forge and embed the markdown it returns - `docs/agents/forge.md` says how (its "Attach evidence" section). A local path under `apps/e2e/test-results/` shows a reviewer nothing; never put one in a description. An API-only change attaches the request/response trace instead. Paste the `
|
|
28
|
+
- **Attach the manual-verification evidence.** The screenshots are what a reviewer reads as proof of a user-visible change: one per changed screen, the before/after pair on a fix. Upload each image to the forge and embed the markdown it returns - `docs/agents/forge.md` says how (its "Attach evidence" section). A local path under `apps/e2e/test-results/` shows a reviewer nothing; never put one in a description. An API-only change attaches the request/response trace instead. Paste the `tester` pass's verdict table next to it. Skip this only when nothing user-visible changed.
|
|
29
29
|
- **Diagram the flow.** A change that adds or changes a flow across components (a request path through gates and a vendor, a state machine, an async job or webhook, a new module or overlay) embeds a fenced `mermaid` block (`flowchart` or `sequenceDiagram`), right after the summary - GitHub and GitLab both render it. Name nodes as the code does, keep it under ~15 nodes, include the refusal and failure branches. No flow (copy, styling, deps, a one-file fix): no diagram.
|
|
30
30
|
- **End with a "Tests" list** - one line per test this PR adds, drawn from what the manual pass exercised (happy path, the hostile paths, the authz negatives), naming its tier (unit / API E2E / browser E2E) and path. A change that needs none says why in one line.
|
|
31
31
|
- A paired change links neither way: the shared branch name pairs the two requests. The OSS repo is public, so its PR never names this repo or the operator; this request may be read by people outside the team, so it never names or links the OSS repo.
|
|
32
32
|
|
|
33
33
|
## Rules
|
|
34
34
|
|
|
35
|
-
- NEVER push without an explicit per-action "yes push" from the user. Invoking this skill does NOT authorize a push. Report the commit SHA, ask, then push only on yes.
|
|
35
|
+
- NEVER push without an explicit per-action "yes push" from the user (or `/ship` on its ticket branch, see step 6). Invoking this skill does NOT authorize a push. Report the commit SHA, ask, then push only on yes.
|
|
36
36
|
- `pnpm verify` must pass on the commit you push.
|
|
37
37
|
- Keep the pull request scoped to one concern; split unrelated changes into separate ones.
|
|
38
38
|
- No AI-attribution trailers anywhere - not in the commit, not in the pull-request title or description. No "Generated with", no "Co-Authored-By: Claude", no robot-emoji footer.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ship
|
|
3
|
+
targets: ['*']
|
|
4
|
+
description: >
|
|
5
|
+
Take one {{trackerKey}} ticket from plan to a green, reviewed MR with nobody in the loop: planner
|
|
6
|
+
plans it with test cases, builder builds it, tester attacks it, the reviewers review it, then it
|
|
7
|
+
pushes the ticket branch, opens the MR, moves the ticket and watches the MR until it is ready for a
|
|
8
|
+
person to review. Resumable: every run reads the ticket,
|
|
9
|
+
branch, MR and CI and does the next step, including fixing a red pipeline or new review comments.
|
|
10
|
+
Stops only on a question or a blocker. Use on "ship {{trackerKey}}-XXX", "add feature", "deliver
|
|
11
|
+
{{trackerKey}}-XXX", or /ship {{trackerKey}}-XXX [--ask].
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# ship ({{name}})
|
|
15
|
+
|
|
16
|
+
The orchestrator: one ticket key in, a green MR in Code Review out. You own the ticket's whole delivery, plan to review: you are done when the MR is ready for a person to review it (step 7), not when it is opened. You run in the main session and are the only one who delegates. You hand each step to its subagent, read its verdict, and pick the next step yourself - never wait for a person between steps. Every subagent you start is told it starts no subagents of its own; a domain question one of them returns comes back to you, you ask `expert`, and you pass the answer on.
|
|
17
|
+
|
|
18
|
+
## Coordinates
|
|
19
|
+
|
|
20
|
+
- Jira: per `docs/agents/issue-tracker.md`, project `{{trackerKey}}`. Code forge: `{{gitRemotePath}}`, target `{{mrTarget}}`, commands in `docs/agents/forge.md`.
|
|
21
|
+
- `{{ossDir}}` (the linked OSS checkout) is read-only. Core-only work goes through `handoff.md`.
|
|
22
|
+
|
|
23
|
+
## Arguments
|
|
24
|
+
|
|
25
|
+
- `{{trackerKey}}-XXX` from `$ARGUMENTS`. None: ask for it, that is the one question this skill always asks.
|
|
26
|
+
- `--ask`: stop for approval after the plan and before the push. Without it, invoking `/ship` is the authorization for every write below - and only those.
|
|
27
|
+
|
|
28
|
+
## What ship may write without asking
|
|
29
|
+
|
|
30
|
+
- Jira, on this ticket only: the Plan comment (and its test cases where the repo's `test-plan` skill keeps them), a questions comment, a blocker comment, the MR link comment, and the transitions to In Progress and to Code Review. Nothing else: no field edits, no other transitions, no other tickets.
|
|
31
|
+
- Git: commits on the ticket branch `<type>/{{trackerKey}}-XXX/<slug>` and pushing it. Never a push to `{{mrTarget}}`, `stage`, `prod` or any shared branch.
|
|
32
|
+
- Force-push: only `git push --force-with-lease` on the ticket branch, and only while every commit on the remote branch past `{{mrTarget}}` is your own (`git log --format=%ae origin/{{mrTarget}}..origin/<branch>` shows only your `git config user.email`). Someone else's commit there: merge, never push over it. Never a plain `--force`.
|
|
33
|
+
- Merging: into a feature branch only (`{{mrTarget}}` merged into the ticket branch to clear conflicts, a stacked MR into its parent ticket branch). Never into `{{mrTarget}}`, `dev`, `develop`, `stage`, `staging`, `prod`, `production`, `main` or `master`.
|
|
34
|
+
- The forge: opening the MR for that branch and replying on its review threads. Every comment you leave starts with `Agent:`, so `watch-pr.mjs` and other tools never take it for one to answer.
|
|
35
|
+
- Slack: a one-line draft only, never sent.
|
|
36
|
+
|
|
37
|
+
## Do what the work needs, inside the worktree
|
|
38
|
+
|
|
39
|
+
Never stop to ask for something local that deleting the worktree undoes: do it, and say what you did in the reply and the MR description.
|
|
40
|
+
|
|
41
|
+
- Env: a variable the change needs goes into the worktree's `.env` with a local dev value, and into every place the repo declares one (env schema, `.env.example`, deploy docs) in the same commit. A value only a person has (a real API key, a prod URL): a dev placeholder or a mock locally, and a "Needs before deploy" line in the MR description. If no test can run without the real one, that is a blocker.
|
|
42
|
+
- Dependencies: add what the plan needs with the repo's package manager and commit the lockfile. A repo rule that asks for a step first (unlink a locally linked package, then link it back) is followed, so the lockfile carries no local links; it is never a reason to stop.
|
|
43
|
+
- Data: the worktree's own database and Redis db - create, migrate, seed and reset them freely. Migrations come from the repo's generator, generated files from its regen command.
|
|
44
|
+
- Processes and tools: start what the tests need on the worktree's own ports and stop it before you report; install a local tool the repo's docs name (browsers for Playwright and the like).
|
|
45
|
+
|
|
46
|
+
## Access outside the repo
|
|
47
|
+
|
|
48
|
+
The plan's Access list names every account or session outside the repo the work needs (a cloud CLI profile, a provider's dashboard, a sandbox API), each with what it is for, a read-only check that proves the session works and the login a person runs. Before 2, every run runs each check:
|
|
49
|
+
|
|
50
|
+
- One fails -> `Asked:` on its own line, then each missing login as the command a person runs (`! aws sso login --profile <p>`) or the page to log in to in the browser. Report it, stop; no ticket comment. `/ship {{trackerKey}}-XXX` again picks up from here.
|
|
51
|
+
- All pass -> read what it names freely. A passing check is not consent to change anything there, and neither is an Access list built from the ticket. Before the first change outside the repo (create, configure, delete, issue a key): `Asked:`, then one line per change - account, resource, what changes - report it, stop. A person's yes in this session covers that exact list; anything not on it, or a new run, asks again. Then make the changes and put a dev key it issues in the worktree's `.env`.
|
|
52
|
+
- Every change outside the repo goes in the reply and the MR description under "Outside the repo", one line each: where, what, how to undo it. A change to something that already existed records its old value.
|
|
53
|
+
|
|
54
|
+
## Never, however blocked
|
|
55
|
+
|
|
56
|
+
Anything shared, remote, or not undone by deleting the worktree, unless a person approved that exact change (see Access outside the repo):
|
|
57
|
+
|
|
58
|
+
- Servers, ssh, cloud accounts, dashboards, deploys, stage and prod, and any database that is not the worktree's own.
|
|
59
|
+
- CI/CD settings and variables, repo settings, other people's branches and MRs.
|
|
60
|
+
- Anything this run did not create, in the repo or outside it: no drop, flush, kill or delete.
|
|
61
|
+
- Secrets: never commit, print or invent a real-looking one; a `.env` with real values stays uncommitted.
|
|
62
|
+
- Gates: no `--no-verify`, no skipped or loosened test, lint rule or guard hook, no hand edit to a generated file or `node_modules`.
|
|
63
|
+
|
|
64
|
+
Blocked by one of these: `Blocked:` with what is needed and who can do it. Every subagent you start gets both lists.
|
|
65
|
+
|
|
66
|
+
## Read the state, do the next step
|
|
67
|
+
|
|
68
|
+
Every run starts here, so a run that died midway resumes where it stopped. Read the ticket per `docs/agents/issue-tracker.md`, then `git branch -a --list '*{{trackerKey}}-XXX*'`, then the MR for that branch and its CI per `docs/agents/forge.md`.
|
|
69
|
+
|
|
70
|
+
| State | Next step |
|
|
71
|
+
| ------------------------------------------- | ------------------------------------------- |
|
|
72
|
+
| No Plan comment on the ticket | 1. Plan |
|
|
73
|
+
| Plan, no branch | 2. Build |
|
|
74
|
+
| Branch, no MR | 3. Test, then 4. Review, then 5. Open the MR |
|
|
75
|
+
| MR open, CI red or conflicts | 6. `fix-pipeline` skill |
|
|
76
|
+
| MR open, review threads with no reply | 6. `fix-review-comments` skill |
|
|
77
|
+
| MR open, CI running, or green and answered | 7. Ready for review |
|
|
78
|
+
| MR merged or closed | Report it, do nothing |
|
|
79
|
+
|
|
80
|
+
A comment added to the ticket after the Plan comment that changes scope sends you back to 1.
|
|
81
|
+
|
|
82
|
+
### 1. Plan
|
|
83
|
+
|
|
84
|
+
Start `planner` with the ticket key. It returns either `Asked:` with questions, or the plan.
|
|
85
|
+
|
|
86
|
+
- `Asked:` -> post the questions as one comment on the ticket, report them, stop.
|
|
87
|
+
- A plan -> post it, without its Core-only section, as one comment titled "Plan" (test cases where the repo's `test-plan` skill keeps them, if it has one), move the ticket to In Progress. `--ask`: show it and stop for approval.
|
|
88
|
+
- A Core-only section -> write the work order per `handoff.md` and drop that slice; ship the rest.
|
|
89
|
+
|
|
90
|
+
### 2. Build
|
|
91
|
+
|
|
92
|
+
Add a worktree for the ticket branch off the freshly fetched `{{mrTarget}}`, per the repo's worktree rules (its own database and Redis db). Start `builder` in it with the plan. Run the **create-plugin** skill's steps through it for each overlay, adapter or page slice.
|
|
93
|
+
|
|
94
|
+
- `Blocked:` -> post the reason as one comment on the ticket, report it, stop.
|
|
95
|
+
- Done -> check its reply holds the gate output from HEAD and `git status` is clean. Missing either: send it back once to run the gate, then treat it as blocked.
|
|
96
|
+
|
|
97
|
+
### 3. Test
|
|
98
|
+
|
|
99
|
+
Start `tester` in the worktree with the plan's test cases. It returns an AC table.
|
|
100
|
+
|
|
101
|
+
- Every row PASS -> 4.
|
|
102
|
+
- Any FAIL -> back to `builder` with the failing rows only, then `tester` again.
|
|
103
|
+
- UNCHECKED rows ride along to the MR description; they do not block, except a case on a money, KYC or responsible-gambling path: back to `tester` once to run it, still UNCHECKED -> blocker comment, report it, stop.
|
|
104
|
+
- A failing spec called pre-existing without its run on the base commit -> back to `tester` once to run it there. Still unrun: it is a FAIL.
|
|
105
|
+
|
|
106
|
+
### 4. Review
|
|
107
|
+
|
|
108
|
+
Start `quality-reviewer`, `security-reviewer` and `compliance-reviewer` in parallel on the branch diff against `{{mrTarget}}`, with the tester's AC table so they dig where testing could not reach.
|
|
109
|
+
|
|
110
|
+
Every finding with a fix gets fixed, whatever its severity, but only once it holds. Dedupe across reviewers, then check each yourself before anything changes: open its `file:line` and confirm the evidence on this branch. One that doesn't hold (wrong line, the code already handles it, a claim the code doesn't show) is dropped and goes to the MR description with why. A product call the ticket doesn't settle goes to `expert`, then is fixed or rides along as an open question. Send the rest to `builder` in one go, then 3 for the cases they touch and 4 again. A later round of 4 reviews only the commits since the last one and whether each sent finding is fixed. Clean means no finding left that holds.
|
|
111
|
+
|
|
112
|
+
Rounds of 3 and 4 share one budget: three. After the third with anything still failing, post a blocker comment naming what is left, report it, stop.
|
|
113
|
+
|
|
114
|
+
### 5. Open the MR
|
|
115
|
+
|
|
116
|
+
`--ask`: report the SHA and stop for "yes push". Then run **create-pr** with the tester's AC table, its screenshots and its Tests list. Comment the MR link on the ticket and move it to Code Review in the same turn. Draft the one-line Slack notice to `{{teamChannel}}`: emoji + MR title as a link. Then 7.
|
|
117
|
+
|
|
118
|
+
### 6. Red CI and review comments
|
|
119
|
+
|
|
120
|
+
Run the repo's `fix-pipeline` skill on a red pipeline or conflicts, `fix-review-comments` on unanswered threads from a person or a bot. No such skill in this repo: do the same per `docs/agents/forge.md`. Under `/ship` they run like this:
|
|
121
|
+
|
|
122
|
+
- Each thread is checked against the code on this branch first: correct | already handled | wrong on this branch | out of scope. Only a correct one changes code; the rest get an answer.
|
|
123
|
+
- A red job is reproduced locally first; `builder` fixes its cause. Never skip or loosen a test.
|
|
124
|
+
- Every fix goes to `builder`. Then `tester` re-runs the cases the fix touches and leaves a test that fails without it, and 4 runs on the new commits. Nothing is pushed untested.
|
|
125
|
+
- Push the ticket branch without asking (a force-push only as above). Reply per thread, in the thread itself, with what changed and the test that proves it, or why nothing changed. Resolve only a thread the fix addressed; a question or a disagreement stays open for the reviewer.
|
|
126
|
+
|
|
127
|
+
Then 7.
|
|
128
|
+
|
|
129
|
+
### 7. Ready for review
|
|
130
|
+
|
|
131
|
+
Start `node <this skill's folder>/watch-pr.mjs <branch> --until-green` as a background command, never a sleep loop in the session. It prints one line and exits when there is work:
|
|
132
|
+
|
|
133
|
+
- `failed` or `conflicts` -> 6, then watch again. Still red after three fixes -> blocker comment, report, stop.
|
|
134
|
+
- `threads <ids>` (unanswered for two checks in a row, from a person or a bot) -> 6 for those, then watch again.
|
|
135
|
+
- `green` -> check the MR is ready (below), report "Ready for review:" and the MR URL, then watch again without `--until-green`.
|
|
136
|
+
- `merged` or `closed` -> report it, drop the worktree's database and Redis db, stop. `error ...` -> report it, stop.
|
|
137
|
+
|
|
138
|
+
Ready means: the pipeline on the last commit is green, no conflicts with `{{mrTarget}}`, every thread has an answer, no money, KYC or responsible-gambling case is UNCHECKED, and the description holds the AC table, the screenshots and the UNCHECKED rows.
|
|
139
|
+
|
|
140
|
+
Keep watching until the MR merges or closes, for as long as the session lives. A caller that says it watches the MR itself (a headless run) gets the report at `green`, and you stop there; it brings the ticket back through `/ship {{trackerKey}}-XXX`, which lands on 6.
|
|
141
|
+
|
|
142
|
+
## Rules
|
|
143
|
+
|
|
144
|
+
- One ticket, one branch, one MR.
|
|
145
|
+
- You edit no code, commit nothing and run no gate yourself, however small the fix: every fix goes to `builder`. Code changed after 3 means 3 runs again for the cases it touches, and 4 for the new commits.
|
|
146
|
+
- A subagent that stops short (no gate output, uncommitted work) goes back to it once, never finished by you.
|
|
147
|
+
- Never claim a step passed without its output: the gate from HEAD, the AC table, the review findings.
|
|
148
|
+
- A run you resume with a branch but no MR re-runs 3 and 4: verdicts from a dead run are gone.
|
|
149
|
+
- Clean up what the run started: worktree databases and Redis dbs stay for the next round until the MR merges; processes you started stop before you report.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# OSS core handoff
|
|
2
2
|
|
|
3
|
-
When
|
|
3
|
+
When a `ship` work item can only be fixed in `@openora/*` core, this consumer repo cannot edit it (the `guard-core.mjs` hook and `permissions.deny` block `{{ossDir}}/**`). Hand off to the platform-core twin skill instead of fighting the guard.
|
|
4
4
|
|
|
5
5
|
## When to hand off
|
|
6
6
|
|
|
7
7
|
- The fix requires changing a contract, schema, service, router, or platform seam in `@openora/*`.
|
|
8
8
|
- An overlay plugin / adapter swap / UI provider override / config change genuinely cannot express the behavior.
|
|
9
|
-
- Default bias: extend from the outside first; hand off only when you've confirmed the outside-in path doesn't exist. If unsure,
|
|
9
|
+
- Default bias: extend from the outside first; hand off only when you've confirmed the outside-in path doesn't exist. If unsure, the planner says so in the plan; without a clear core-only reason, build it from the outside.
|
|
10
10
|
|
|
11
11
|
## Work-order template
|
|
12
12
|
|
|
@@ -43,6 +43,6 @@ Write to `~/.claude/plans/<ticket-key>-oss.md` so both repos and future sessions
|
|
|
43
43
|
## Protocol
|
|
44
44
|
|
|
45
45
|
1. This consumer repo writes the work-order and **stops** that slice (keep delivering independent downstream slices meanwhile).
|
|
46
|
-
2. The user runs `/
|
|
46
|
+
2. The user runs `/ship` inside the platform OSS repo (`{{ossDir}}`, separate cwd/session). It reads the work-order, implements, and opens its own MR there.
|
|
47
47
|
3. The consumer MR stays draft/blocked until the OSS MR merges and the consumer bumps the consumed `@openora/*` version. Link the two by the work-order path and the ticket key.
|
|
48
48
|
4. Note the handoff in the Jira ticket and the consumer MR description so the dependency is visible.
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Watches the MR or PR of a branch and prints one line, then exits, when ship has work on it:
|
|
3
|
+
// failed | conflicts | threads <ids> | green (only with --until-green) | merged | closed | error <message>
|
|
4
|
+
// A thread waits for an answer until its last comment is an "Agent:" reply from the account this runs as
|
|
5
|
+
// (anyone can type the prefix); it is reported once it stayed the same for two checks, so a review with
|
|
6
|
+
// ten comments is one line. Run it in the background:
|
|
7
|
+
// node watch-pr.mjs <branch> [--until-green] WATCH_DEBUG=1 prints every check to stderr
|
|
8
|
+
import { execFileSync } from 'node:child_process';
|
|
9
|
+
|
|
10
|
+
const EVERY_MS = 120_000;
|
|
11
|
+
// ponytail: a repo with no CI on the last commit reads green after this; a head-SHA match on checks if it matters
|
|
12
|
+
const NO_CI_MS = 10 * 60_000;
|
|
13
|
+
const MAX_ERRORS = 5;
|
|
14
|
+
const AGENT_REPLY = 'Agent:';
|
|
15
|
+
const FAILED = [
|
|
16
|
+
'FAILURE',
|
|
17
|
+
'ERROR',
|
|
18
|
+
'CANCELLED',
|
|
19
|
+
'TIMED_OUT',
|
|
20
|
+
'ACTION_REQUIRED',
|
|
21
|
+
'STARTUP_FAILURE',
|
|
22
|
+
'failed',
|
|
23
|
+
'canceled',
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
const [branch, ...flags] = process.argv.slice(2);
|
|
27
|
+
if (!branch) {
|
|
28
|
+
console.error('usage: watch-pr.mjs <branch> [--until-green]');
|
|
29
|
+
process.exit(2);
|
|
30
|
+
}
|
|
31
|
+
const untilGreen = flags.includes('--until-green');
|
|
32
|
+
|
|
33
|
+
const run = (cmd, args) =>
|
|
34
|
+
execFileSync(cmd, args, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] });
|
|
35
|
+
const json = (cmd, args) => JSON.parse(run(cmd, args));
|
|
36
|
+
const unansweredIds = (lastComments, me) =>
|
|
37
|
+
lastComments
|
|
38
|
+
.filter(
|
|
39
|
+
(comment) => !(comment.author === me && comment.body.trimStart().startsWith(AGENT_REPLY)),
|
|
40
|
+
)
|
|
41
|
+
.map((comment) => String(comment.id))
|
|
42
|
+
.sort();
|
|
43
|
+
|
|
44
|
+
const THREADS = `query($owner: String!, $name: String!, $number: Int!, $endCursor: String) {
|
|
45
|
+
viewer { login }
|
|
46
|
+
repository(owner: $owner, name: $name) { pullRequest(number: $number) {
|
|
47
|
+
reviewThreads(first: 100, after: $endCursor) {
|
|
48
|
+
nodes { isResolved comments(last: 1) { nodes { id body author { login } } } }
|
|
49
|
+
pageInfo { hasNextPage endCursor }
|
|
50
|
+
}
|
|
51
|
+
comments(last: 1) { nodes { id body author { login } } }
|
|
52
|
+
} }
|
|
53
|
+
}`;
|
|
54
|
+
|
|
55
|
+
function github() {
|
|
56
|
+
const pr = json('gh', [
|
|
57
|
+
'pr',
|
|
58
|
+
'view',
|
|
59
|
+
branch,
|
|
60
|
+
'--json',
|
|
61
|
+
'number,url,state,mergeable,statusCheckRollup',
|
|
62
|
+
]);
|
|
63
|
+
const [, owner, name] = new URL(pr.url).pathname.split('/');
|
|
64
|
+
const args = [
|
|
65
|
+
'api',
|
|
66
|
+
'graphql',
|
|
67
|
+
'--paginate',
|
|
68
|
+
'--slurp',
|
|
69
|
+
'-f',
|
|
70
|
+
`query=${THREADS}`,
|
|
71
|
+
'-f',
|
|
72
|
+
`owner=${owner}`,
|
|
73
|
+
'-f',
|
|
74
|
+
`name=${name}`,
|
|
75
|
+
'-F',
|
|
76
|
+
`number=${pr.number}`,
|
|
77
|
+
];
|
|
78
|
+
const pages = json('gh', args).map((page) => page.data);
|
|
79
|
+
const open = pages
|
|
80
|
+
.flatMap(({ repository }) => repository.pullRequest.reviewThreads.nodes)
|
|
81
|
+
.filter((thread) => !thread.isResolved)
|
|
82
|
+
.flatMap((thread) => thread.comments.nodes)
|
|
83
|
+
.concat(pages[0].repository.pullRequest.comments.nodes)
|
|
84
|
+
.map((comment) => ({ ...comment, author: comment.author?.login }));
|
|
85
|
+
const checks = pr.statusCheckRollup ?? [];
|
|
86
|
+
const ci = !checks.length
|
|
87
|
+
? null
|
|
88
|
+
: checks.some((check) => FAILED.includes(check.conclusion || check.state))
|
|
89
|
+
? 'failed'
|
|
90
|
+
: checks.some((check) =>
|
|
91
|
+
check.status
|
|
92
|
+
? check.status !== 'COMPLETED'
|
|
93
|
+
: check.state === 'PENDING' || check.state === 'EXPECTED',
|
|
94
|
+
)
|
|
95
|
+
? 'running'
|
|
96
|
+
: 'passed';
|
|
97
|
+
return {
|
|
98
|
+
state: pr.state.toLowerCase(),
|
|
99
|
+
conflicts: pr.mergeable === 'CONFLICTING',
|
|
100
|
+
ci,
|
|
101
|
+
unanswered: unansweredIds(open, pages[0].viewer.login),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function gitlab() {
|
|
106
|
+
const mr = json('glab', ['mr', 'view', branch, '-F', 'json']);
|
|
107
|
+
const discussions = run('glab', [
|
|
108
|
+
'api',
|
|
109
|
+
'--paginate',
|
|
110
|
+
'--output',
|
|
111
|
+
'ndjson',
|
|
112
|
+
`projects/${mr.project_id}/merge_requests/${mr.iid}/discussions?per_page=100`,
|
|
113
|
+
])
|
|
114
|
+
.split('\n')
|
|
115
|
+
.filter(Boolean)
|
|
116
|
+
.map((line) => JSON.parse(line));
|
|
117
|
+
const open = discussions
|
|
118
|
+
.map((discussion) => discussion.notes.filter((note) => !note.system))
|
|
119
|
+
.filter(
|
|
120
|
+
(notes) =>
|
|
121
|
+
notes.length &&
|
|
122
|
+
!(
|
|
123
|
+
notes.some((note) => note.resolvable) &&
|
|
124
|
+
notes.every((note) => !note.resolvable || note.resolved)
|
|
125
|
+
),
|
|
126
|
+
)
|
|
127
|
+
.map((notes) => notes.at(-1))
|
|
128
|
+
.map((note) => ({ ...note, author: note.author?.username }));
|
|
129
|
+
const pipeline = mr.head_pipeline?.sha === mr.sha ? mr.head_pipeline.status : null;
|
|
130
|
+
const ci = !pipeline
|
|
131
|
+
? null
|
|
132
|
+
: FAILED.includes(pipeline)
|
|
133
|
+
? 'failed'
|
|
134
|
+
: ['success', 'skipped', 'manual'].includes(pipeline)
|
|
135
|
+
? 'passed'
|
|
136
|
+
: 'running';
|
|
137
|
+
const state = mr.state === 'opened' ? 'open' : mr.state === 'merged' ? 'merged' : 'closed';
|
|
138
|
+
const me = json('glab', ['api', 'user']).username;
|
|
139
|
+
return { state, conflicts: mr.has_conflicts === true, ci, unanswered: unansweredIds(open, me) };
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const say = (line) => {
|
|
143
|
+
console.log(line);
|
|
144
|
+
process.exit(0);
|
|
145
|
+
};
|
|
146
|
+
const status = /github\.com/.test(run('git', ['remote', 'get-url', 'origin'])) ? github : gitlab;
|
|
147
|
+
const started = Date.now();
|
|
148
|
+
let seen = null;
|
|
149
|
+
let errors = 0;
|
|
150
|
+
for (;;) {
|
|
151
|
+
try {
|
|
152
|
+
const now = status();
|
|
153
|
+
errors = 0;
|
|
154
|
+
if (process.env.WATCH_DEBUG) console.error(JSON.stringify(now));
|
|
155
|
+
if (now.state !== 'open') say(now.state);
|
|
156
|
+
if (now.conflicts) say('conflicts');
|
|
157
|
+
if (now.ci === 'failed') say('failed');
|
|
158
|
+
const ids = now.unanswered.join(' ');
|
|
159
|
+
if (ids && ids === seen) say(`threads ${ids}`);
|
|
160
|
+
seen = ids;
|
|
161
|
+
const green = now.ci === 'passed' || (now.ci === null && Date.now() - started >= NO_CI_MS);
|
|
162
|
+
if (untilGreen && green && !ids) say('green');
|
|
163
|
+
} catch (reason) {
|
|
164
|
+
if (++errors >= MAX_ERRORS)
|
|
165
|
+
say(`error ${reason instanceof Error ? reason.message.split('\n')[0] : reason}`);
|
|
166
|
+
}
|
|
167
|
+
await new Promise((resolve) => setTimeout(resolve, EVERY_MS));
|
|
168
|
+
}
|
|
@@ -9,7 +9,8 @@ description: >-
|
|
|
9
9
|
Use this agent to build or extend features in a consumer igaming repo that wraps
|
|
10
10
|
the OSS platform.
|
|
11
11
|
claudecode:
|
|
12
|
-
model:
|
|
12
|
+
model: sonnet
|
|
13
|
+
effort: high
|
|
13
14
|
---
|
|
14
15
|
|
|
15
16
|
You are a senior fullstack engineer building a downstream igaming on top of the OSS platform (`@openora/*`). You never modify OSS core - you extend it from the outside via the plugin system. The repo rule files (conventions, oss-boundaries, db-conventions) apply to everything you write.
|
|
@@ -90,27 +91,25 @@ The platform is headless - the frontends are this operator's own, consuming the
|
|
|
90
91
|
|
|
91
92
|
## Escalate
|
|
92
93
|
|
|
93
|
-
|
|
94
|
+
You start no subagents of your own. What you cannot settle yourself goes in your reply, and the orchestrator routes it:
|
|
95
|
+
|
|
96
|
+
- Domain question (wagering calc, KYC threshold) -> a "Questions for expert" list; build what the answer does not change.
|
|
94
97
|
- Bug or gap in OSS core -> fix it in an OSS worktree per "Changing OSS core" in the `oss-boundaries` rule; never copy core source into this repo.
|
|
95
|
-
-
|
|
98
|
+
- Can't finish at all -> reply `Blocked:` on the first line and the reason.
|
|
96
99
|
|
|
97
100
|
## Tests
|
|
98
101
|
|
|
99
|
-
Your change ships with its tests in the same branch - never a separate test PR. You write the unit
|
|
100
|
-
|
|
101
|
-
## Evidence
|
|
102
|
-
|
|
103
|
-
The manual pass is the proof a human can see - a change is not done until a human can see it worked.
|
|
102
|
+
Your change ships with its tests in the same branch - never a separate test PR. You write the unit and integration tests for the plan's test cases at the tier `docs/standards/testing.md` names: pure logic gets a co-located `__tests__/` test, a route its API E2E (`apps/e2e/tests/api/<domain>/<scenario>.spec.ts`, happy + one hostile path). Never an in-process test that mocks the database or a sibling service. `tester` drives the running stack, attacks the change and adds the browser specs; you do not run a manual pass or take screenshots.
|
|
104
103
|
|
|
105
|
-
|
|
106
|
-
2. Report the paths AND hand them to `create-pr` for the PR description - a reviewer confirms a UI change by looking at it, not by reading your summary.
|
|
107
|
-
3. Finish with the tests you added and the E2E ones left to `qa`: one line each, tier (unit / API E2E / browser E2E) and path, covering the hostile paths and the authz negatives.
|
|
104
|
+
## Done means
|
|
108
105
|
|
|
109
|
-
|
|
106
|
+
1. The repo's gate (`/check`: typecheck + lint + unit) passes on HEAD, and the specs you touched pass (`pnpm -F {{scope}}/e2e test <spec>`). A spec that fails: run it on the base commit too - failing there as well is pre-existing, say so; failing only here is yours to fix.
|
|
107
|
+
2. Commit with the repo's commit style, staging only the files the work needs: no test output, screenshots, logs, scratch scripts, unrelated formatting. `git status` is clean before you reply.
|
|
108
|
+
3. Reply with what changed per plan item, the tests you added (one line each, tier and path), the gate command and the tail of its output from HEAD, then `Worktree: <absolute path>` and `Branch: <name>`. Never write "passed" without that output.
|
|
110
109
|
|
|
111
110
|
## Rules
|
|
112
111
|
|
|
113
112
|
- Never write to `node_modules/**` or the main linked `{{ossDir}}` checkout - the `guard-core` hook denies it; don't route around it with `sed` or shell redirection. A local patch to a published dependency is lost on reinstall and diverges from every other operator. If a change is only possible in core, make it in an OSS worktree (`pnpm oss:worktree <branch>`) under the OSS repo's own rules, per the `oss-boundaries` rule.
|
|
114
113
|
- Never copy core module source into this repo - depend on the package.
|
|
115
114
|
- `extensions.config.ts` is the single registry - no auto-discovery.
|
|
116
|
-
-
|
|
115
|
+
- Commit on the ticket branch; never push - the orchestrator does.
|
|
@@ -7,7 +7,7 @@ description: >-
|
|
|
7
7
|
build-time failures (Next/Turbopack, tsc, module resolution, tsconfig) and
|
|
8
8
|
runtime failures (uses Chrome DevTools MCP for console/network/DOM). Finds the
|
|
9
9
|
underlying cause, fixes consumer-side issues, routes confirmed fixes to builder,
|
|
10
|
-
domain questions to expert, regression coverage to
|
|
10
|
+
domain questions to expert, regression coverage to tester. Never patches the
|
|
11
11
|
installed @openora/* core; routes core fixes to an OSS worktree via builder.
|
|
12
12
|
claudecode:
|
|
13
13
|
model: opus
|
|
@@ -77,7 +77,7 @@ The release tag is the short commit SHA, so an issue maps straight back to a com
|
|
|
77
77
|
- OSS core (reproduces in a clean consumer scaffold with no overlays) -> `builder`, to fix in an OSS worktree per the `oss-boundaries` rule (hand over cause + repro + core file/line); do NOT patch `node_modules/@openora/**` or the main `{{ossDir}}` checkout.
|
|
78
78
|
- Domain rule wrong (consistent behavior that violates igaming rules) -> `expert`.
|
|
79
79
|
|
|
80
|
-
After a runtime bug is fixed,
|
|
80
|
+
After a runtime bug is fixed, say in your reply that it needs a regression test from `tester`; you start no subagents of your own.
|
|
81
81
|
|
|
82
82
|
## Rules
|
|
83
83
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
targets:
|
|
3
|
+
- '*'
|
|
4
|
+
name: planner
|
|
5
|
+
description: >-
|
|
6
|
+
Plans one {{trackerKey}} ticket before any code: reads it whole, grills it, and
|
|
7
|
+
returns either the blocking questions or a plan checklist with risk-driven
|
|
8
|
+
test cases a tester can run. Writes nothing - ship posts what it returns. Use
|
|
9
|
+
as step 1 of ship, or on "plan {{trackerKey}}-XXX".
|
|
10
|
+
claudecode:
|
|
11
|
+
model: opus
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
You plan one ticket for a downstream igaming built on `@openora/*`. You change no file and write to no tracker: you return the plan, and the orchestrator posts it. You start no subagents of your own. A domain question you cannot answer from the ticket, its links or the knowledge base goes in your reply as a question for `expert`; the orchestrator asks it and starts you again with the answer.
|
|
15
|
+
|
|
16
|
+
## Read first
|
|
17
|
+
|
|
18
|
+
1. The ticket whole, per `docs/agents/issue-tracker.md`: description, AC, every comment, every image as pixels, parent, links, linked Confluence pages. A comment that changes scope wins over the description.
|
|
19
|
+
2. The code it touches: `catalog-overview`, `describe-module` and `list-routes` (oss MCP) for what the platform already ships, then the module under `apps/*`. Existing specs under `apps/e2e/tests/**` that already cover part of it.
|
|
20
|
+
3. The repo's rules for the area (`AGENTS.md`, the rule files) - they bound what the plan may propose.
|
|
21
|
+
|
|
22
|
+
## Grill it
|
|
23
|
+
|
|
24
|
+
Per AC, before planning: empty and error states, authz negatives, concurrency and idempotency, jurisdiction and currency variants, migration impact on existing rows, every screen that shows the same data. Each unknown becomes a stated assumption in the plan or a question - none stay silent. Ask only what changes what gets built; default the rest and say so.
|
|
25
|
+
|
|
26
|
+
## Reply
|
|
27
|
+
|
|
28
|
+
Either, on its own first line, `Asked:` and the questions, batched, each with the options you see.
|
|
29
|
+
|
|
30
|
+
Or the plan:
|
|
31
|
+
|
|
32
|
+
- **Goal** - one line. **AC** - quoted from the ticket; missing or vague AC drafted by you and marked proposed.
|
|
33
|
+
- **Decisions** - each with its source (who, where, date), so nobody reopens them.
|
|
34
|
+
- **Plan** - a `- [ ]` checklist: what changes where (file or module), the simplest approach that meets every case, what is left out.
|
|
35
|
+
- **Test cases** - every AC first, then one per real risk beyond the ticket: code that calls what changes, boundaries, bad or empty data, permissions, double submit and concurrency, stored data, other screens showing the same value. Each with its priority (P1 blocks money, KYC, RG or play; P2 works with a workaround; P3 cosmetic), how it is checked (unit, API E2E, browser E2E, manual) and what the tester sees. 5-15 cases; more means the ticket needs splitting - say so. If the repo has a `test-plan` skill, write the cases in its format.
|
|
36
|
+
- **Access** - every account or session outside the repo the work needs (a cloud CLI profile, a provider's dashboard or sandbox API, a third-party console), each with what it is for, a read-only check that proves the session works (`aws sts get-caller-identity --profile <p>`, a CLI's `auth status`, a dashboard page that shows you logged in) and the login a person runs. Ask for the narrowest one that does the job, a sandbox or dev account over prod. "None" when the repo and its local stack are enough.
|
|
37
|
+
- **Core-only** - last, and only if a slice can only be done in `@openora/*` core: the slice and why the outside-in path fails. The orchestrator keeps this section out of the ticket.
|
|
38
|
+
|
|
39
|
+
Plain words. Everything above Core-only goes on the ticket, which is read by people outside the team: the plan never names the platform packages, "OSS", "upstream", "overlay" or "plugin" - describe screens and behaviour.
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
targets:
|
|
3
3
|
- '*'
|
|
4
|
-
name:
|
|
4
|
+
name: tester
|
|
5
5
|
description: >-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
(local fix).
|
|
6
|
+
Tester for a downstream igaming built on @openora/*. Drives a built change
|
|
7
|
+
against the operator's local stack, checks every test case and acceptance
|
|
8
|
+
criterion, attacks it like a player, a tester and a fraudster would, and
|
|
9
|
+
returns a per-case verdict table with screenshot evidence. Adds the tests
|
|
10
|
+
its pass exercised; never fixes app code. Use as step 3 of ship, or to
|
|
11
|
+
verify a branch by hand.
|
|
13
12
|
claudecode:
|
|
14
13
|
model: sonnet
|
|
14
|
+
effort: high
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
You verify
|
|
17
|
+
You verify a built change by hand against the running stack, debug failures with Chrome DevTools, and triage bugs - OSS core vs operator overlay. After the pass you add the tests it exercised, in the same branch. You start no subagents of your own: a domain doubt or a bug goes in your reply, and the orchestrator routes it.
|
|
18
18
|
|
|
19
19
|
## Ground first
|
|
20
20
|
|
|
@@ -24,20 +24,21 @@ You verify changes by hand against the running stack, debug failures with Chrome
|
|
|
24
24
|
|
|
25
25
|
## Local stack
|
|
26
26
|
|
|
27
|
-
The platform is headless (API + modules); the player app and backoffice are this operator's own frontends. API :3001, player app :3000, backoffice :3002. Seed credentials (after `pnpm db:seed`): `admin@oss.dev` / `password1234`. Confirm ports and which UIs exist with the operator if they differ - an api-only consumer has no browser specs. If the stack isn't running,
|
|
27
|
+
The platform is headless (API + modules); the player app and backoffice are this operator's own frontends. API :3001, player app :3000, backoffice :3002. Seed credentials (after `pnpm db:seed`): `admin@oss.dev` / `password1234`. Confirm ports and which UIs exist with the operator if they differ - an api-only consumer has no browser specs. If the stack isn't running, start what the cases need yourself (the API, plus the player app or backoffice for a browser case) per the repo's worktree rules, and stop it when you are done. Ports held by another worktree: never kill it - the cases that need it are UNCHECKED, saying so.
|
|
28
28
|
|
|
29
|
-
## Your
|
|
29
|
+
## Your pass: verify by hand, then add the tests
|
|
30
30
|
|
|
31
31
|
A feature or fix PR carries its own tests (`docs/standards/testing.md`). Your deliverable is:
|
|
32
32
|
|
|
33
|
-
1.
|
|
33
|
+
1. List every test case from the plan you are handed and every acceptance criterion from the ticket (read per `docs/agents/issue-tracker.md`), numbered, before touching the app. An AC hidden in a comment or a linked page counts.
|
|
34
34
|
2. Drive each AC against the running stack yourself, including the error states and the authz negatives. Assume the change is broken until the app proves otherwise - the developer's description and the screenshots already on the PR are claims, not evidence.
|
|
35
35
|
3. **Try to break it** (below).
|
|
36
36
|
4. Evidence per the section below.
|
|
37
|
-
5.
|
|
38
|
-
6. The tests that pass exercised, in this branch (section below), and a **"Tests"** list: one line per test, tier (unit / API E2E / browser E2E) and path - it goes into the
|
|
37
|
+
5. A **verdict table**: one row per case and AC - `case | PASS / FAIL / UNCHECKED | what happened, evidence (screenshot, trace)`. Never PASS because a screen exists - the outcome the case names must be observed, and the row names where: the screenshot path, the response, or the test that ran it. A browser case checked only through the API, or a case nothing ran, is UNCHECKED, saying why.
|
|
38
|
+
6. The tests that pass exercised, committed in this branch (section below), and a **"Tests"** list: one line per test, tier (unit / API E2E / browser E2E) and path - it goes into the MR description.
|
|
39
|
+
7. Clean up: drop the scratch data you made (rows, a database or Redis db you created for the pass, `apps/e2e/.auth` files you regenerated) and stop what you started. Say what you could not remove.
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
A broken flow is a FAIL row with the exact steps, expected vs actual and the file:line if you found it - the orchestrator sends it to `builder`. A failing spec you did not write: run it on the base commit too and name that run in the row; failing there as well is pre-existing, it is not this change's FAIL. Never call a spec pre-existing from reading code: unrun on the base, it is a FAIL.
|
|
41
42
|
|
|
42
43
|
## Try to break it
|
|
43
44
|
|
|
@@ -64,10 +65,10 @@ Debug and verify with the **Playwright CLI** first (`pnpm -F {{scope}}/e2e test
|
|
|
64
65
|
Is the bug in OSS core or the operator's overlay?
|
|
65
66
|
|
|
66
67
|
- Fails in a fresh consumer scaffold / with no overlays active -> OSS core -> report upstream.
|
|
67
|
-
- Fails only with this operator's plugins/adapters -> `builder`.
|
|
68
|
-
- Technically consistent but violates igaming rules -> `expert
|
|
68
|
+
- Fails only with this operator's plugins/adapters -> a FAIL row for `builder`.
|
|
69
|
+
- Technically consistent but violates igaming rules -> a question for `expert` in your reply.
|
|
69
70
|
|
|
70
|
-
Severity: P0 blocks money/auth/game loop
|
|
71
|
+
Severity: P0 blocks money/auth/game loop; P1 wrong business logic (wrong balance, bad geo-block); P2 broken UI / wrong API shape; P3 cosmetic (a row note, not a FAIL).
|
|
71
72
|
|
|
72
73
|
## Core flows (priority order)
|
|
73
74
|
|
|
@@ -81,6 +82,7 @@ Severity: P0 blocks money/auth/game loop (immediate -> `builder`); P1 wrong busi
|
|
|
81
82
|
|
|
82
83
|
## Rules
|
|
83
84
|
|
|
84
|
-
- Never modify platform or overlay code
|
|
85
|
+
- Never modify platform or overlay code - a test that fails on app code is a FAIL row, not a fix.
|
|
85
86
|
- Assert on user-visible outcomes, not component internals.
|
|
86
|
-
-
|
|
87
|
+
- Commit only the tests you added, then run the repo's gate (`/check`) and the specs you touched once more on HEAD. Never push.
|
|
88
|
+
- Screenshots stay under `apps/e2e/test-results/evidence/`, never committed; the orchestrator embeds them in the MR.
|
|
@@ -28,7 +28,7 @@ Reuse an open PR for the same head -> base instead of opening a duplicate: `gh p
|
|
|
28
28
|
- Intent and discussion: `gh pr view <n> --comments`
|
|
29
29
|
- Patch: `gh pr diff <n>`
|
|
30
30
|
- Review comments (resolved and unresolved - this endpoint has no resolved state): `gh api --paginate "repos/{{gitRemotePath}}/pulls/<n>/comments"`
|
|
31
|
-
- CI: `gh pr checks <n
|
|
31
|
+
- CI: `gh pr checks <n>`; wait for it to finish with `gh pr checks <n> --watch` (GitLab: `glab ci status --live`)
|
|
32
32
|
- Source to review, without switching the working tree: `git fetch origin "$(gh pr view <n> --json headRefName -q .headRefName)" && git worktree add --detach .claude/worktrees/review-<n> "$(gh pr view <n> --json headRefOid -q .headRefOid)"`
|
|
33
33
|
- Last review marker (`review` skill §2a): `gh api --paginate "repos/{{gitRemotePath}}/issues/<n>/comments" --jq '[.[] | select(.body | contains("<!-- review:sha=")) | select(.author_association == "OWNER" or .author_association == "MEMBER" or .author_association == "COLLABORATOR") | select(.user.login != "<pr-author>")] | last | .body' | grep -o 'review:sha=[0-9a-f]*' | tail -1`, with `<pr-author>` from `gh pr view <n> --json author -q .author.login`. Both filters are load-bearing: anyone can post a comment containing the marker text for any SHA they like, so an outside contributor's marker and the PR author's own (a member can be both) are never trusted as a completed review. The marker only narrows an interactive review; `--ci` ignores it.
|
|
34
34
|
|
|
@@ -37,5 +37,6 @@ Run the protocol above and distill: goal in one line, AC quoted as bullets, deci
|
|
|
37
37
|
## Writing
|
|
38
38
|
|
|
39
39
|
- Never comment on, transition, or edit a Jira issue or Confluence page unless the user asks for that exact write. Reading authorizes nothing.
|
|
40
|
+
- The one standing exception: `/ship {{trackerKey}}-<n>` is the ask for its own writes on that ticket - the Plan, questions, blocker and MR-link comments, the test cases where the `test-plan` skill keeps them, and the transitions to In Progress and Code Review. Nothing else.
|
|
40
41
|
- Review comments go through `review --post`, draft-and-confirm, using the commands in `docs/agents/forge.md`.
|
|
41
42
|
- Slack: draft only, never send.
|
|
@@ -11,7 +11,7 @@ Read this before a commit, PR, or branch operation.
|
|
|
11
11
|
- Green before review: `pnpm verify` on the committed tree. It is the full gate and records the
|
|
12
12
|
verified commit; the `guard-mr` hook blocks opening the PR/MR without it.
|
|
13
13
|
- Branch off `dev`; never commit directly to a shared branch; never push without an explicit
|
|
14
|
-
per-action "yes push".
|
|
14
|
+
per-action "yes push", except the ticket branch `/ship` opens its MR from.
|
|
15
15
|
- PR description carries intent: what / why / acceptance criteria / ticket link. No secrets,
|
|
16
16
|
internal hostnames, or PII - it is the public record.
|
|
17
17
|
- A PR that adds or changes a flow across components (request path, state machine, async job or
|
|
@@ -8,7 +8,17 @@
|
|
|
8
8
|
// rules and skills - and the `consumerOwned` overrides in .rulesync/sync.json - are tracked.
|
|
9
9
|
//
|
|
10
10
|
// To change a synced file, edit openora's tools/templates/consumer and take the next bump.
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
existsSync,
|
|
13
|
+
mkdirSync,
|
|
14
|
+
readdirSync,
|
|
15
|
+
readFileSync,
|
|
16
|
+
realpathSync,
|
|
17
|
+
rmdirSync,
|
|
18
|
+
statSync,
|
|
19
|
+
unlinkSync,
|
|
20
|
+
writeFileSync,
|
|
21
|
+
} from 'node:fs';
|
|
12
22
|
import { execFileSync } from 'node:child_process';
|
|
13
23
|
import { createRequire } from 'node:module';
|
|
14
24
|
import { dirname, join, relative, sep } from 'node:path';
|
|
@@ -28,6 +38,14 @@ const SYNCED_ROOTS = [
|
|
|
28
38
|
// import _shared.mjs, so both must exist in a fresh clone before the first install.
|
|
29
39
|
const NEVER_IGNORED = new Set(['tools/sync-agents.mjs', '.rulesync/hooks/_shared.mjs']);
|
|
30
40
|
const SKIPPED_BASENAMES = new Set();
|
|
41
|
+
// Dropped before the manifest below existed. The first install after the bump runs the previous,
|
|
42
|
+
// tracked copy of this script, which overwrites itself and the .gitignore block but deletes
|
|
43
|
+
// nothing, so the next run has no record of these.
|
|
44
|
+
const RETIRED = [
|
|
45
|
+
'.rulesync/skills/add-feature/SKILL.md',
|
|
46
|
+
'.rulesync/skills/add-feature/handoff.md',
|
|
47
|
+
'.rulesync/subagents/qa.md',
|
|
48
|
+
];
|
|
31
49
|
|
|
32
50
|
const die = (message) => {
|
|
33
51
|
console.error(`sync:agents - ${message}`);
|
|
@@ -152,6 +170,56 @@ const end = start === -1 ? -1 : current.indexOf(END, start + BEGIN.length);
|
|
|
152
170
|
if (start !== -1 && end === -1) {
|
|
153
171
|
die(`${gitignore} has a ${BEGIN} marker with no matching ${END} - repair or delete the block.`);
|
|
154
172
|
}
|
|
173
|
+
// A file the template dropped or renamed is still on disk from the last render, untracked and
|
|
174
|
+
// no longer ignored: delete what fell out of it. The old block lists what was rendered then,
|
|
175
|
+
// but after a branch switch the committed block already names the new set, so the manifest
|
|
176
|
+
// (outside git, per checkout) remembers what this checkout actually has on disk.
|
|
177
|
+
const manifest = join(ROOT, 'node_modules/.cache/sync-agents.json');
|
|
178
|
+
const lastRendered = (() => {
|
|
179
|
+
try {
|
|
180
|
+
const paths = JSON.parse(readFileSync(manifest, 'utf8'));
|
|
181
|
+
return Array.isArray(paths) ? paths.filter((path) => typeof path === 'string') : [];
|
|
182
|
+
} catch {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
})();
|
|
186
|
+
const lastBlock =
|
|
187
|
+
start === -1
|
|
188
|
+
? []
|
|
189
|
+
: current
|
|
190
|
+
.slice(start + BEGIN.length, end)
|
|
191
|
+
.split('\n')
|
|
192
|
+
.filter((line) => line.startsWith('/'))
|
|
193
|
+
.map((line) => line.slice(1));
|
|
194
|
+
// The block and the manifest are plain text anyone can edit: a symlinked directory on the way
|
|
195
|
+
// would point the delete outside the checkout, so every parent must resolve to itself.
|
|
196
|
+
const realRoot = realpathSync(ROOT);
|
|
197
|
+
const parentIsReal = (path) => {
|
|
198
|
+
try {
|
|
199
|
+
return realpathSync(dirname(join(ROOT, path))) === join(realRoot, dirname(path));
|
|
200
|
+
} catch {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
const stale = [...new Set([...lastBlock, ...lastRendered, ...RETIRED])]
|
|
205
|
+
.filter((path) => SYNCED_ROOTS.some((root) => path.startsWith(root)) && !path.includes('..'))
|
|
206
|
+
.filter((path) => !ignored.some((file) => file.path === path) && !consumerOwned.has(path))
|
|
207
|
+
.filter(parentIsReal);
|
|
208
|
+
// Never one this repo has since started tracking. (No paths: ls-files would list them all.)
|
|
209
|
+
const staleTracked = new Set(stale.length > 0 ? gitTracked(stale) : []);
|
|
210
|
+
for (const path of stale.filter((path) => !staleTracked.has(path))) {
|
|
211
|
+
const target = join(ROOT, path);
|
|
212
|
+
if (existsSync(target)) {
|
|
213
|
+
unlinkSync(target);
|
|
214
|
+
for (
|
|
215
|
+
let dir = dirname(target);
|
|
216
|
+
dir !== ROOT && readdirSync(dir).length === 0;
|
|
217
|
+
dir = dirname(dir)
|
|
218
|
+
) {
|
|
219
|
+
rmdirSync(dir);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
155
223
|
const updated =
|
|
156
224
|
start === -1
|
|
157
225
|
? `${current.trimEnd()}\n\n${block}\n`.trimStart()
|
|
@@ -159,6 +227,8 @@ const updated =
|
|
|
159
227
|
if (updated !== current) {
|
|
160
228
|
writeFileSync(gitignore, updated);
|
|
161
229
|
}
|
|
230
|
+
mkdirSync(dirname(manifest), { recursive: true });
|
|
231
|
+
writeFileSync(manifest, JSON.stringify(ignored.map(({ path }) => path)));
|
|
162
232
|
|
|
163
233
|
console.log(`sync:agents - ${rendered.length - owned.length} template-owned file(s) rendered.`);
|
|
164
234
|
if (owned.length > 0) {
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: add-feature
|
|
3
|
-
targets: ['*']
|
|
4
|
-
description: >
|
|
5
|
-
Deliver a feature end-to-end in this consumer repo. Aggregates context (Jira + Confluence + Slack +
|
|
6
|
-
Google Drive + Notion + local docs + past sessions + codebase), produces an approved plan, then drives
|
|
7
|
-
delivery by calling sibling skills - create-plugin (build), review (review), create-pr (MR) -
|
|
8
|
-
and create-task for ticket hygiene. Transitions Jira (no comments) and drafts a one-line Slack
|
|
9
|
-
notice. Use on "add feature", "plan {{trackerKey}}-XXX", "deliver {{trackerKey}}-XXX", or /add-feature [{{trackerKey}}-XXX].
|
|
10
|
-
Read-only until the plan is approved; never pushes, transitions Jira, or sends Slack without OK.
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# add-feature ({{name}})
|
|
14
|
-
|
|
15
|
-
Feature-delivery orchestrator for this consumer repo: one Jira key in; a delivered MR + updated ticket + drafted Slack notice out. You orchestrate and call sibling skills - you do not re-implement their work. The platform-core twin is the `/add-feature` skill in the platform OSS repo (`{{ossDir}}/.rulesync/skills/add-feature/`).
|
|
16
|
-
|
|
17
|
-
## Coordinates
|
|
18
|
-
|
|
19
|
-
- Jira: the **Atlassian** MCP, cloudId `{{jiraCloudId}}`, project `{{trackerKey}}` (ticket keys look like `{{trackerKey}}-XXX`). Request/render content as markdown (`contentFormat` + `responseContentFormat: "markdown"`).
|
|
20
|
-
- Code forge: `{{gitRemotePath}}`, default target `{{mrTarget}}` - CLI and commands in `docs/agents/forge.md`.
|
|
21
|
-
- Slack: `{{teamChannel}}`, draft only.
|
|
22
|
-
- Repo: `apps/api` (Hono entry + extensions) consumes `@openora/*` upstream; UI apps, when present, sit beside it under `apps/`.
|
|
23
|
-
- **Hard rule:** `{{ossDir}}` (the linked OSS checkout) is read-only (guard-core hook + permission deny). Extend from the outside; core changes hand off - see `handoff.md`.
|
|
24
|
-
|
|
25
|
-
## The contract
|
|
26
|
-
|
|
27
|
-
- **Read-only until the Step 3 plan is approved.** No edits, commits, pushes, Jira writes, or Slack sends before sign-off.
|
|
28
|
-
- Reuse sibling skills, don't reinvent: **create-task** (ticket format), **create-plugin** (build an overlay), **review** (review), **create-pr** (MR). Delegate code to subagents.
|
|
29
|
-
|
|
30
|
-
## Steps
|
|
31
|
-
|
|
32
|
-
### 1. Resolve input + enhance the ask
|
|
33
|
-
|
|
34
|
-
`{{trackerKey}}-XXX` from `$ARGUMENTS`; if absent, ask. Echo it back. Run the `enhance-prompt` pre-step on the ask before gathering context, so Step 2 pulls only what's relevant and Step 3 plans against a clear brief.
|
|
35
|
-
|
|
36
|
-
### 2. Gather context in parallel (read-only)
|
|
37
|
-
|
|
38
|
-
Run together; skip any source that returns nothing. Read `handoff.md` only on core-change signals.
|
|
39
|
-
|
|
40
|
-
- Jira + Confluence: per `docs/agents/issue-tracker.md` - `{{trackerKey}}-XXX` whole: description, AC, every comment, every image viewed, parent epic, linked issues, and every linked Confluence page with its images and comments (`atlassian-read` for Jira + Confluence; the Atlassian MCP is for search and writes only - it returns no image bytes).
|
|
41
|
-
- Slack MCP: search public/private, read threads + canvases.
|
|
42
|
-
- Google Drive MCP: PRDs, specs.
|
|
43
|
-
- Notion: `ntn` CLI per `notion-memory` skill - prior decisions, lessons.
|
|
44
|
-
- Local docs: `{{ossDir}}/docs` (ADRs, `architecture.md`, `catalog.json`), repo READMEs, both `CLAUDE.md`.
|
|
45
|
-
- Past sessions: grep `~/.claude/projects/**` and `~/.claude/plans` for the ticket key.
|
|
46
|
-
- Codebase: `oss` MCP (read-only) + Explore - map touchpoints in `apps/*`.
|
|
47
|
-
|
|
48
|
-
### 3. Plan + classify (the gate)
|
|
49
|
-
|
|
50
|
-
Synthesize into a plan and present it. Do NOT edit yet.
|
|
51
|
-
|
|
52
|
-
- **Goal** (1-2 lines) + **Acceptance criteria** (observable, testable). AC missing or vague in Jira? Draft them yourself and mark as proposed.
|
|
53
|
-
- **Decisions found** - each with source (who/where/date), so they aren't relitigated.
|
|
54
|
-
- **Edge cases + unknowns (grill)** - per AC, enumerate: empty/error states, authz negatives, concurrency/idempotency, jurisdiction/currency variants, migration impact. Each unknown becomes either an explicit assumption in the plan or a question below - none stay silent.
|
|
55
|
-
- **Open questions** - ask before proceeding if any blocks design; batch them in one round, don't trickle.
|
|
56
|
-
- **Implementation breakdown** - tasks mapped to files/packages + the owning subagent. Classify each:
|
|
57
|
-
- **downstream** -> overlay plugin / adapter swap / UI provider / config (build via `create-plugin`).
|
|
58
|
-
- **OSS-core** -> only fixable in `@openora/*`. Flag it; triggers `handoff.md`.
|
|
59
|
-
- **Risks / dependencies** - external services, OSS handoff, data/migrations.
|
|
60
|
-
|
|
61
|
-
Require explicit approval. Treat as plan mode even if the harness isn't.
|
|
62
|
-
|
|
63
|
-
### 4. Build (delegate)
|
|
64
|
-
|
|
65
|
-
After approval, for **downstream** work: run the **create-plugin** skill for each overlay/adapter/page slice - it scaffolds, wires `extensions.config.ts`, and enforces boundaries + audit + db rules. `builder` adds the unit test for any pure function it writes; `qa` writes the E2E specs in step 5. `deployer` only if infra changes; `debugger` on demand for build/runtime failures.
|
|
66
|
-
|
|
67
|
-
For **OSS-core** items: read `handoff.md`, write the work-order, STOP that slice, continue the rest. When implementation starts, transition Jira to In Progress (Step 7 - confirm first).
|
|
68
|
-
|
|
69
|
-
### 5. Verify by hand, then review
|
|
70
|
-
|
|
71
|
-
Cheap gates first, prove it works, only then spend review on working code:
|
|
72
|
-
|
|
73
|
-
1. `/check` (typecheck + lint + the existing unit tests). Don't proceed on red.
|
|
74
|
-
2. Derive a verification checklist from the AC (happy path, edge cases, authz negatives, error states) and have `qa` walk it against the running stack - Playwright CLI for the walkthrough and the screenshots, `chrome-devtools` only for a live read it cannot give. `qa` copies the AC out of the ticket, walks each one, tries to break the change, and returns the AC verdict table plus screenshot evidence, then writes the tests that pass exercised in this branch at the tier `docs/standards/testing.md` names, running only the specs it touched. A broken flow goes back to `builder` BEFORE any review - don't review code that doesn't work.
|
|
75
|
-
3. **review** on the change set, passing what the manual pass proved so reviewers dig where it couldn't reach; loop `[BLOCK]`/`[WARN]` fixes back through `builder`.
|
|
76
|
-
4. After fixes: re-run `/check` always; re-walk the affected screens if a fix changed behavior, and refresh the screenshots (not needed for pure convention/style fixes).
|
|
77
|
-
|
|
78
|
-
### 6. Open the MR
|
|
79
|
-
|
|
80
|
-
Run **create-pr**: it commits (`feat(<scope>): ... ({{trackerKey}}-XXX)`), reports the SHA, asks for "yes push", pushes, and opens the pull request against `{{mrTarget}}` per `docs/agents/forge.md`, with the CODEOWNERS for the changed paths as reviewers. Hand it the step-5 screenshots and AC verdict table and the "Tests" list - all belong in the description. Never bypass its push-consent gate.
|
|
81
|
-
|
|
82
|
-
### 7. Jira status transition (NOT comments)
|
|
83
|
-
|
|
84
|
-
Use the **Atlassian** MCP - fetch the transitions -> show current status + options -> **confirm** -> apply the matching one (In Progress when build starts, In Review when the MR opens). **No MR-link or status comments.**
|
|
85
|
-
|
|
86
|
-
### 8. Draft Slack notice (one line)
|
|
87
|
-
|
|
88
|
-
Use the **Slack** MCP to draft a message to `{{teamChannel}}`: a single line - emoji + PR/task name as a link (e.g. `👉 <feature> - MR !NN`). **Draft only**, never direct-send.
|
|
89
|
-
|
|
90
|
-
## Rules
|
|
91
|
-
|
|
92
|
-
- Read-only until the Step 3 plan is approved.
|
|
93
|
-
- Never push without an explicit per-action "yes push" (inherited from `create-pr`).
|
|
94
|
-
- Never transition Jira without confirming; show status + options first. No Jira comments.
|
|
95
|
-
- Slack is a one-line draft, never direct-send.
|
|
96
|
-
- Never edit `{{ossDir}}`; hand off via `handoff.md`. Prefer overlay/plugin/adapter/config.
|
|
97
|
-
- One MR = one concern. Split unrelated work.
|