@blxzer/pactile 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +602 -0
- package/LICENSE +235 -0
- package/README.md +115 -0
- package/README.zh-CN.md +115 -0
- package/bin/compat-warning.js +11 -0
- package/bin/cstl.js +6 -0
- package/bin/pactile.js +3 -0
- package/bin/smart-search.js +38 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +362 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/capability-smoke.d.ts +24 -0
- package/dist/commands/capability-smoke.d.ts.map +1 -0
- package/dist/commands/capability-smoke.js +83 -0
- package/dist/commands/capability-smoke.js.map +1 -0
- package/dist/commands/channel/adapters/claude.d.ts +29 -0
- package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
- package/dist/commands/channel/adapters/claude.js +203 -0
- package/dist/commands/channel/adapters/claude.js.map +1 -0
- package/dist/commands/channel/adapters/codex.d.ts +85 -0
- package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
- package/dist/commands/channel/adapters/codex.js +505 -0
- package/dist/commands/channel/adapters/codex.js.map +1 -0
- package/dist/commands/channel/adapters/index.d.ts +84 -0
- package/dist/commands/channel/adapters/index.d.ts.map +1 -0
- package/dist/commands/channel/adapters/index.js +115 -0
- package/dist/commands/channel/adapters/index.js.map +1 -0
- package/dist/commands/channel/adapters/types.d.ts +33 -0
- package/dist/commands/channel/adapters/types.d.ts.map +1 -0
- package/dist/commands/channel/adapters/types.js +2 -0
- package/dist/commands/channel/adapters/types.js.map +1 -0
- package/dist/commands/channel/agent-loader.d.ts +32 -0
- package/dist/commands/channel/agent-loader.d.ts.map +1 -0
- package/dist/commands/channel/agent-loader.js +154 -0
- package/dist/commands/channel/agent-loader.js.map +1 -0
- package/dist/commands/channel/context-loader.d.ts +26 -0
- package/dist/commands/channel/context-loader.d.ts.map +1 -0
- package/dist/commands/channel/context-loader.js +290 -0
- package/dist/commands/channel/context-loader.js.map +1 -0
- package/dist/commands/channel/context.d.ts +16 -0
- package/dist/commands/channel/context.d.ts.map +1 -0
- package/dist/commands/channel/context.js +83 -0
- package/dist/commands/channel/context.js.map +1 -0
- package/dist/commands/channel/create.d.ts +27 -0
- package/dist/commands/channel/create.d.ts.map +1 -0
- package/dist/commands/channel/create.js +39 -0
- package/dist/commands/channel/create.js.map +1 -0
- package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
- package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
- package/dist/commands/channel/dev-parse-trace.js +70 -0
- package/dist/commands/channel/dev-parse-trace.js.map +1 -0
- package/dist/commands/channel/guard.d.ts +150 -0
- package/dist/commands/channel/guard.d.ts.map +1 -0
- package/dist/commands/channel/guard.js +475 -0
- package/dist/commands/channel/guard.js.map +1 -0
- package/dist/commands/channel/index.d.ts +3 -0
- package/dist/commands/channel/index.d.ts.map +1 -0
- package/dist/commands/channel/index.js +531 -0
- package/dist/commands/channel/index.js.map +1 -0
- package/dist/commands/channel/interrupt.d.ts +10 -0
- package/dist/commands/channel/interrupt.d.ts.map +1 -0
- package/dist/commands/channel/interrupt.js +22 -0
- package/dist/commands/channel/interrupt.js.map +1 -0
- package/dist/commands/channel/kill.d.ts +7 -0
- package/dist/commands/channel/kill.d.ts.map +1 -0
- package/dist/commands/channel/kill.js +121 -0
- package/dist/commands/channel/kill.js.map +1 -0
- package/dist/commands/channel/list.d.ts +17 -0
- package/dist/commands/channel/list.d.ts.map +1 -0
- package/dist/commands/channel/list.js +233 -0
- package/dist/commands/channel/list.js.map +1 -0
- package/dist/commands/channel/messages.d.ts +15 -0
- package/dist/commands/channel/messages.d.ts.map +1 -0
- package/dist/commands/channel/messages.js +245 -0
- package/dist/commands/channel/messages.js.map +1 -0
- package/dist/commands/channel/rm.d.ts +27 -0
- package/dist/commands/channel/rm.d.ts.map +1 -0
- package/dist/commands/channel/rm.js +216 -0
- package/dist/commands/channel/rm.js.map +1 -0
- package/dist/commands/channel/run.d.ts +30 -0
- package/dist/commands/channel/run.d.ts.map +1 -0
- package/dist/commands/channel/run.js +130 -0
- package/dist/commands/channel/run.js.map +1 -0
- package/dist/commands/channel/send.d.ts +11 -0
- package/dist/commands/channel/send.d.ts.map +1 -0
- package/dist/commands/channel/send.js +24 -0
- package/dist/commands/channel/send.js.map +1 -0
- package/dist/commands/channel/spawn.d.ts +40 -0
- package/dist/commands/channel/spawn.d.ts.map +1 -0
- package/dist/commands/channel/spawn.js +242 -0
- package/dist/commands/channel/spawn.js.map +1 -0
- package/dist/commands/channel/store/events.d.ts +39 -0
- package/dist/commands/channel/store/events.d.ts.map +1 -0
- package/dist/commands/channel/store/events.js +87 -0
- package/dist/commands/channel/store/events.js.map +1 -0
- package/dist/commands/channel/store/filter.d.ts +3 -0
- package/dist/commands/channel/store/filter.d.ts.map +1 -0
- package/dist/commands/channel/store/filter.js +2 -0
- package/dist/commands/channel/store/filter.js.map +1 -0
- package/dist/commands/channel/store/lock.d.ts +23 -0
- package/dist/commands/channel/store/lock.d.ts.map +1 -0
- package/dist/commands/channel/store/lock.js +99 -0
- package/dist/commands/channel/store/lock.js.map +1 -0
- package/dist/commands/channel/store/paths.d.ts +63 -0
- package/dist/commands/channel/store/paths.d.ts.map +1 -0
- package/dist/commands/channel/store/paths.js +247 -0
- package/dist/commands/channel/store/paths.js.map +1 -0
- package/dist/commands/channel/store/schema.d.ts +27 -0
- package/dist/commands/channel/store/schema.d.ts.map +1 -0
- package/dist/commands/channel/store/schema.js +34 -0
- package/dist/commands/channel/store/schema.js.map +1 -0
- package/dist/commands/channel/store/thread-state.d.ts +5 -0
- package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
- package/dist/commands/channel/store/thread-state.js +16 -0
- package/dist/commands/channel/store/thread-state.js.map +1 -0
- package/dist/commands/channel/store/watch.d.ts +19 -0
- package/dist/commands/channel/store/watch.d.ts.map +1 -0
- package/dist/commands/channel/store/watch.js +146 -0
- package/dist/commands/channel/store/watch.js.map +1 -0
- package/dist/commands/channel/supervisor/idle.d.ts +46 -0
- package/dist/commands/channel/supervisor/idle.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/idle.js +72 -0
- package/dist/commands/channel/supervisor/idle.js.map +1 -0
- package/dist/commands/channel/supervisor/inbox.d.ts +30 -0
- package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/inbox.js +160 -0
- package/dist/commands/channel/supervisor/inbox.js.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts +68 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.js +146 -0
- package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
- package/dist/commands/channel/supervisor/stdout.d.ts +51 -0
- package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/stdout.js +121 -0
- package/dist/commands/channel/supervisor/stdout.js.map +1 -0
- package/dist/commands/channel/supervisor/turns.d.ts +31 -0
- package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/turns.js +45 -0
- package/dist/commands/channel/supervisor/turns.js.map +1 -0
- package/dist/commands/channel/supervisor/warning.d.ts +48 -0
- package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/warning.js +77 -0
- package/dist/commands/channel/supervisor/warning.js.map +1 -0
- package/dist/commands/channel/supervisor.d.ts +59 -0
- package/dist/commands/channel/supervisor.d.ts.map +1 -0
- package/dist/commands/channel/supervisor.js +345 -0
- package/dist/commands/channel/supervisor.js.map +1 -0
- package/dist/commands/channel/text-body.d.ts +13 -0
- package/dist/commands/channel/text-body.d.ts.map +1 -0
- package/dist/commands/channel/text-body.js +47 -0
- package/dist/commands/channel/text-body.js.map +1 -0
- package/dist/commands/channel/threads.d.ts +39 -0
- package/dist/commands/channel/threads.d.ts.map +1 -0
- package/dist/commands/channel/threads.js +106 -0
- package/dist/commands/channel/threads.js.map +1 -0
- package/dist/commands/channel/title.d.ts +12 -0
- package/dist/commands/channel/title.d.ts.map +1 -0
- package/dist/commands/channel/title.js +24 -0
- package/dist/commands/channel/title.js.map +1 -0
- package/dist/commands/channel/wait.d.ts +17 -0
- package/dist/commands/channel/wait.d.ts.map +1 -0
- package/dist/commands/channel/wait.js +75 -0
- package/dist/commands/channel/wait.js.map +1 -0
- package/dist/commands/detach.d.ts +7 -0
- package/dist/commands/detach.d.ts.map +1 -0
- package/dist/commands/detach.js +31 -0
- package/dist/commands/detach.js.map +1 -0
- package/dist/commands/init.d.ts +51 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1660 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate.d.ts +10 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +38 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/purge.d.ts +9 -0
- package/dist/commands/purge.d.ts.map +1 -0
- package/dist/commands/purge.js +29 -0
- package/dist/commands/purge.js.map +1 -0
- package/dist/commands/rollback.d.ts +7 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +27 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/rollout.d.ts +34 -0
- package/dist/commands/rollout.d.ts.map +1 -0
- package/dist/commands/rollout.js +102 -0
- package/dist/commands/rollout.js.map +1 -0
- package/dist/commands/uninstall.d.ts +23 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +68 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +139 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +2459 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/upgrade.d.ts +28 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +84 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/validate-rules.d.ts +6 -0
- package/dist/commands/validate-rules.d.ts.map +1 -0
- package/dist/commands/validate-rules.js +33 -0
- package/dist/commands/validate-rules.js.map +1 -0
- package/dist/commands/workflow.d.ts +35 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +220 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/configurators/cursor.d.ts +21 -0
- package/dist/configurators/cursor.d.ts.map +1 -0
- package/dist/configurators/cursor.js +51 -0
- package/dist/configurators/cursor.js.map +1 -0
- package/dist/configurators/index.d.ts +68 -0
- package/dist/configurators/index.d.ts.map +1 -0
- package/dist/configurators/index.js +170 -0
- package/dist/configurators/index.js.map +1 -0
- package/dist/configurators/shared.d.ts +200 -0
- package/dist/configurators/shared.d.ts.map +1 -0
- package/dist/configurators/shared.js +602 -0
- package/dist/configurators/shared.js.map +1 -0
- package/dist/configurators/workflow.d.ts +45 -0
- package/dist/configurators/workflow.d.ts.map +1 -0
- package/dist/configurators/workflow.js +256 -0
- package/dist/configurators/workflow.js.map +1 -0
- package/dist/constants/paths.d.ts +93 -0
- package/dist/constants/paths.d.ts.map +1 -0
- package/dist/constants/paths.js +106 -0
- package/dist/constants/paths.js.map +1 -0
- package/dist/constants/version.d.ts +9 -0
- package/dist/constants/version.d.ts.map +1 -0
- package/dist/constants/version.js +15 -0
- package/dist/constants/version.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/index.d.ts +62 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +187 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/manifests/0.1.0.json +9 -0
- package/dist/migrations/manifests/0.1.1.json +9 -0
- package/dist/migrations/manifests/0.1.2.json +9 -0
- package/dist/migrations/manifests/0.1.3.json +9 -0
- package/dist/migrations/manifests/0.1.4.json +9 -0
- package/dist/migrations/manifests/0.2.1.json +9 -0
- package/dist/migrations/manifests/0.2.10.json +374 -0
- package/dist/migrations/manifests/0.2.2.json +9 -0
- package/dist/migrations/manifests/0.2.3.json +9 -0
- package/dist/migrations/manifests/0.2.4.json +9 -0
- package/dist/migrations/manifests/0.2.5.json +9 -0
- package/dist/migrations/manifests/0.2.6.json +9 -0
- package/dist/migrations/manifests/0.2.7.json +9 -0
- package/dist/migrations/manifests/0.2.8.json +9 -0
- package/dist/migrations/manifests/0.2.9.json +9 -0
- package/dist/migrations/manifests/0.3.0.json +89 -0
- package/dist/migrations/manifests/0.3.1.json +32 -0
- package/dist/migrations/manifests/0.3.2.json +16 -0
- package/dist/migrations/manifests/0.3.3.json +9 -0
- package/dist/migrations/manifests/0.3.4.json +9 -0
- package/dist/migrations/manifests/0.3.5.json +9 -0
- package/dist/migrations/manifests/0.3.6.json +9 -0
- package/dist/migrations/manifests/0.4.0.json +9 -0
- package/dist/migrations/manifests/0.4.1.json +9 -0
- package/dist/migrations/manifests/0.4.2.json +9 -0
- package/dist/migrations/manifests/0.4.3.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.0.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.5.json +9 -0
- package/dist/pactile/adapters/codex/index.d.ts +75 -0
- package/dist/pactile/adapters/codex/index.d.ts.map +1 -0
- package/dist/pactile/adapters/codex/index.js +269 -0
- package/dist/pactile/adapters/codex/index.js.map +1 -0
- package/dist/pactile/adapters/cursor/index.d.ts +60 -0
- package/dist/pactile/adapters/cursor/index.d.ts.map +1 -0
- package/dist/pactile/adapters/cursor/index.js +186 -0
- package/dist/pactile/adapters/cursor/index.js.map +1 -0
- package/dist/pactile/adapters/index.d.ts +4 -0
- package/dist/pactile/adapters/index.d.ts.map +1 -0
- package/dist/pactile/adapters/index.js +4 -0
- package/dist/pactile/adapters/index.js.map +1 -0
- package/dist/pactile/adoption/bindings.d.ts +20 -0
- package/dist/pactile/adoption/bindings.d.ts.map +1 -0
- package/dist/pactile/adoption/bindings.js +99 -0
- package/dist/pactile/adoption/bindings.js.map +1 -0
- package/dist/pactile/adoption/discovery.d.ts +8 -0
- package/dist/pactile/adoption/discovery.d.ts.map +1 -0
- package/dist/pactile/adoption/discovery.js +159 -0
- package/dist/pactile/adoption/discovery.js.map +1 -0
- package/dist/pactile/adoption/inventory.d.ts +28 -0
- package/dist/pactile/adoption/inventory.d.ts.map +1 -0
- package/dist/pactile/adoption/inventory.js +261 -0
- package/dist/pactile/adoption/inventory.js.map +1 -0
- package/dist/pactile/adoption/safety.d.ts +19 -0
- package/dist/pactile/adoption/safety.d.ts.map +1 -0
- package/dist/pactile/adoption/safety.js +88 -0
- package/dist/pactile/adoption/safety.js.map +1 -0
- package/dist/pactile/adoption/workflow.d.ts +31 -0
- package/dist/pactile/adoption/workflow.d.ts.map +1 -0
- package/dist/pactile/adoption/workflow.js +259 -0
- package/dist/pactile/adoption/workflow.js.map +1 -0
- package/dist/pactile/compat/cli-options.d.ts +9 -0
- package/dist/pactile/compat/cli-options.d.ts.map +1 -0
- package/dist/pactile/compat/cli-options.js +9 -0
- package/dist/pactile/compat/cli-options.js.map +1 -0
- package/dist/pactile/compat/init-context.d.ts +16 -0
- package/dist/pactile/compat/init-context.d.ts.map +1 -0
- package/dist/pactile/compat/init-context.js +87 -0
- package/dist/pactile/compat/init-context.js.map +1 -0
- package/dist/pactile/compat/legacy-migrations.d.ts +8 -0
- package/dist/pactile/compat/legacy-migrations.d.ts.map +1 -0
- package/dist/pactile/compat/legacy-migrations.js +17 -0
- package/dist/pactile/compat/legacy-migrations.js.map +1 -0
- package/dist/pactile/compat/retired-alternate-client.d.ts +42 -0
- package/dist/pactile/compat/retired-alternate-client.d.ts.map +1 -0
- package/dist/pactile/compat/retired-alternate-client.js +153 -0
- package/dist/pactile/compat/retired-alternate-client.js.map +1 -0
- package/dist/pactile/compat/update-residue.d.ts +4 -0
- package/dist/pactile/compat/update-residue.d.ts.map +1 -0
- package/dist/pactile/compat/update-residue.js +55 -0
- package/dist/pactile/compat/update-residue.js.map +1 -0
- package/dist/pactile/exit/index.d.ts +3 -0
- package/dist/pactile/exit/index.d.ts.map +1 -0
- package/dist/pactile/exit/index.js +3 -0
- package/dist/pactile/exit/index.js.map +1 -0
- package/dist/pactile/exit/receipt.d.ts +23 -0
- package/dist/pactile/exit/receipt.d.ts.map +1 -0
- package/dist/pactile/exit/receipt.js +64 -0
- package/dist/pactile/exit/receipt.js.map +1 -0
- package/dist/pactile/exit/service.d.ts +107 -0
- package/dist/pactile/exit/service.d.ts.map +1 -0
- package/dist/pactile/exit/service.js +774 -0
- package/dist/pactile/exit/service.js.map +1 -0
- package/dist/pactile/index.d.ts +26 -0
- package/dist/pactile/index.d.ts.map +1 -0
- package/dist/pactile/index.js +22 -0
- package/dist/pactile/index.js.map +1 -0
- package/dist/pactile/lifecycle/command-runner.d.ts +26 -0
- package/dist/pactile/lifecycle/command-runner.d.ts.map +1 -0
- package/dist/pactile/lifecycle/command-runner.js +129 -0
- package/dist/pactile/lifecycle/command-runner.js.map +1 -0
- package/dist/pactile/lifecycle/default-adapters.d.ts +5 -0
- package/dist/pactile/lifecycle/default-adapters.d.ts.map +1 -0
- package/dist/pactile/lifecycle/default-adapters.js +136 -0
- package/dist/pactile/lifecycle/default-adapters.js.map +1 -0
- package/dist/pactile/lifecycle/index.d.ts +6 -0
- package/dist/pactile/lifecycle/index.d.ts.map +1 -0
- package/dist/pactile/lifecycle/index.js +6 -0
- package/dist/pactile/lifecycle/index.js.map +1 -0
- package/dist/pactile/lifecycle/legacy-import.d.ts +16 -0
- package/dist/pactile/lifecycle/legacy-import.d.ts.map +1 -0
- package/dist/pactile/lifecycle/legacy-import.js +228 -0
- package/dist/pactile/lifecycle/legacy-import.js.map +1 -0
- package/dist/pactile/lifecycle/orchestrator.d.ts +109 -0
- package/dist/pactile/lifecycle/orchestrator.d.ts.map +1 -0
- package/dist/pactile/lifecycle/orchestrator.js +1030 -0
- package/dist/pactile/lifecycle/orchestrator.js.map +1 -0
- package/dist/pactile/lifecycle/project-files.d.ts +28 -0
- package/dist/pactile/lifecycle/project-files.d.ts.map +1 -0
- package/dist/pactile/lifecycle/project-files.js +297 -0
- package/dist/pactile/lifecycle/project-files.js.map +1 -0
- package/dist/pactile/middleware/index.d.ts +3 -0
- package/dist/pactile/middleware/index.d.ts.map +1 -0
- package/dist/pactile/middleware/index.js +2 -0
- package/dist/pactile/middleware/index.js.map +1 -0
- package/dist/pactile/middleware/manifest-loader.d.ts +22 -0
- package/dist/pactile/middleware/manifest-loader.d.ts.map +1 -0
- package/dist/pactile/middleware/manifest-loader.js +228 -0
- package/dist/pactile/middleware/manifest-loader.js.map +1 -0
- package/dist/pactile/migration/index.d.ts +2 -0
- package/dist/pactile/migration/index.d.ts.map +1 -0
- package/dist/pactile/migration/index.js +2 -0
- package/dist/pactile/migration/index.js.map +1 -0
- package/dist/pactile/migration/transaction.d.ts +54 -0
- package/dist/pactile/migration/transaction.d.ts.map +1 -0
- package/dist/pactile/migration/transaction.js +445 -0
- package/dist/pactile/migration/transaction.js.map +1 -0
- package/dist/pactile/projection/managed-block.d.ts +32 -0
- package/dist/pactile/projection/managed-block.d.ts.map +1 -0
- package/dist/pactile/projection/managed-block.js +78 -0
- package/dist/pactile/projection/managed-block.js.map +1 -0
- package/dist/pactile/projection/planner.d.ts +65 -0
- package/dist/pactile/projection/planner.d.ts.map +1 -0
- package/dist/pactile/projection/planner.js +349 -0
- package/dist/pactile/projection/planner.js.map +1 -0
- package/dist/pactile/projection/shared/index.d.ts +38 -0
- package/dist/pactile/projection/shared/index.d.ts.map +1 -0
- package/dist/pactile/projection/shared/index.js +186 -0
- package/dist/pactile/projection/shared/index.js.map +1 -0
- package/dist/pactile/projection/store.d.ts +72 -0
- package/dist/pactile/projection/store.d.ts.map +1 -0
- package/dist/pactile/projection/store.js +669 -0
- package/dist/pactile/projection/store.js.map +1 -0
- package/dist/pactile/projection/structured-merge.d.ts +11 -0
- package/dist/pactile/projection/structured-merge.d.ts.map +1 -0
- package/dist/pactile/projection/structured-merge.js +347 -0
- package/dist/pactile/projection/structured-merge.js.map +1 -0
- package/dist/pactile/providers/index.d.ts +3 -0
- package/dist/pactile/providers/index.d.ts.map +1 -0
- package/dist/pactile/providers/index.js +3 -0
- package/dist/pactile/providers/index.js.map +1 -0
- package/dist/pactile/providers/probes.d.ts +55 -0
- package/dist/pactile/providers/probes.d.ts.map +1 -0
- package/dist/pactile/providers/probes.js +164 -0
- package/dist/pactile/providers/probes.js.map +1 -0
- package/dist/pactile/registry.d.ts +64 -0
- package/dist/pactile/registry.d.ts.map +1 -0
- package/dist/pactile/registry.js +196 -0
- package/dist/pactile/registry.js.map +1 -0
- package/dist/pactile/retrieval/boundary.d.ts +18 -0
- package/dist/pactile/retrieval/boundary.d.ts.map +1 -0
- package/dist/pactile/retrieval/boundary.js +113 -0
- package/dist/pactile/retrieval/boundary.js.map +1 -0
- package/dist/pactile/retrieval/evidence.d.ts +9 -0
- package/dist/pactile/retrieval/evidence.d.ts.map +1 -0
- package/dist/pactile/retrieval/evidence.js +327 -0
- package/dist/pactile/retrieval/evidence.js.map +1 -0
- package/dist/pactile/retrieval/index.d.ts +4 -0
- package/dist/pactile/retrieval/index.d.ts.map +1 -0
- package/dist/pactile/retrieval/index.js +4 -0
- package/dist/pactile/retrieval/index.js.map +1 -0
- package/dist/pactile/retrieval/planner.d.ts +23 -0
- package/dist/pactile/retrieval/planner.d.ts.map +1 -0
- package/dist/pactile/retrieval/planner.js +702 -0
- package/dist/pactile/retrieval/planner.js.map +1 -0
- package/dist/pactile/retrieval/types.d.ts +108 -0
- package/dist/pactile/retrieval/types.d.ts.map +1 -0
- package/dist/pactile/retrieval/types.js +36 -0
- package/dist/pactile/retrieval/types.js.map +1 -0
- package/dist/pactile/runtime/case-fold.d.ts +2 -0
- package/dist/pactile/runtime/case-fold.d.ts.map +1 -0
- package/dist/pactile/runtime/case-fold.js +31 -0
- package/dist/pactile/runtime/case-fold.js.map +1 -0
- package/dist/pactile/runtime/index.d.ts +8 -0
- package/dist/pactile/runtime/index.d.ts.map +1 -0
- package/dist/pactile/runtime/index.js +5 -0
- package/dist/pactile/runtime/index.js.map +1 -0
- package/dist/pactile/runtime/json-api.d.ts +15 -0
- package/dist/pactile/runtime/json-api.d.ts.map +1 -0
- package/dist/pactile/runtime/json-api.js +68 -0
- package/dist/pactile/runtime/json-api.js.map +1 -0
- package/dist/pactile/runtime/paths.d.ts +59 -0
- package/dist/pactile/runtime/paths.d.ts.map +1 -0
- package/dist/pactile/runtime/paths.js +201 -0
- package/dist/pactile/runtime/paths.js.map +1 -0
- package/dist/pactile/runtime/stores.d.ts +54 -0
- package/dist/pactile/runtime/stores.d.ts.map +1 -0
- package/dist/pactile/runtime/stores.js +375 -0
- package/dist/pactile/runtime/stores.js.map +1 -0
- package/dist/pactile/runtime/unicode-nfc-data.d.ts +12 -0
- package/dist/pactile/runtime/unicode-nfc-data.d.ts.map +1 -0
- package/dist/pactile/runtime/unicode-nfc-data.js +8 -0
- package/dist/pactile/runtime/unicode-nfc-data.js.map +1 -0
- package/dist/pactile/runtime/unicode-nfc.d.ts +3 -0
- package/dist/pactile/runtime/unicode-nfc.d.ts.map +1 -0
- package/dist/pactile/runtime/unicode-nfc.js +77 -0
- package/dist/pactile/runtime/unicode-nfc.js.map +1 -0
- package/dist/pactile/tiles/catalog.d.ts +35 -0
- package/dist/pactile/tiles/catalog.d.ts.map +1 -0
- package/dist/pactile/tiles/catalog.js +235 -0
- package/dist/pactile/tiles/catalog.js.map +1 -0
- package/dist/pactile/tiles/compiler.d.ts +54 -0
- package/dist/pactile/tiles/compiler.d.ts.map +1 -0
- package/dist/pactile/tiles/compiler.js +270 -0
- package/dist/pactile/tiles/compiler.js.map +1 -0
- package/dist/pactile/tiles/content/baseline/index.d.ts +5 -0
- package/dist/pactile/tiles/content/baseline/index.d.ts.map +1 -0
- package/dist/pactile/tiles/content/baseline/index.js +115 -0
- package/dist/pactile/tiles/content/baseline/index.js.map +1 -0
- package/dist/pactile/tiles/content/index.d.ts +4 -0
- package/dist/pactile/tiles/content/index.d.ts.map +1 -0
- package/dist/pactile/tiles/content/index.js +4 -0
- package/dist/pactile/tiles/content/index.js.map +1 -0
- package/dist/pactile/tiles/content/ondemand/index.d.ts +5 -0
- package/dist/pactile/tiles/content/ondemand/index.d.ts.map +1 -0
- package/dist/pactile/tiles/content/ondemand/index.js +184 -0
- package/dist/pactile/tiles/content/ondemand/index.js.map +1 -0
- package/dist/pactile/tiles/content/source.d.ts +29 -0
- package/dist/pactile/tiles/content/source.d.ts.map +1 -0
- package/dist/pactile/tiles/content/source.js +86 -0
- package/dist/pactile/tiles/content/source.js.map +1 -0
- package/dist/pactile/tiles/loader.d.ts +31 -0
- package/dist/pactile/tiles/loader.d.ts.map +1 -0
- package/dist/pactile/tiles/loader.js +139 -0
- package/dist/pactile/tiles/loader.js.map +1 -0
- package/dist/pactile/tiles/safe-yaml.d.ts +11 -0
- package/dist/pactile/tiles/safe-yaml.d.ts.map +1 -0
- package/dist/pactile/tiles/safe-yaml.js +212 -0
- package/dist/pactile/tiles/safe-yaml.js.map +1 -0
- package/dist/templates/common/bundled-skills/pactile-check/SKILL.md +161 -0
- package/dist/templates/common/bundled-skills/pactile-check/references/fowler-12-smells.md +28 -0
- package/dist/templates/common/bundled-skills/pactile-handoff/SKILL.md +117 -0
- package/dist/templates/common/bundled-skills/pactile-meta/SKILL.md +75 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/add-project-local-conventions.md +83 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-agents.md +47 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-context-loading.md +84 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-hooks.md +57 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-skills-or-commands.md +77 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-spec-structure.md +83 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-task-lifecycle.md +88 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/change-workflow.md +65 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/customize-local/overview.md +55 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/context-injection.md +68 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/generated-files.md +83 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/overview.md +51 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/spec-system.md +102 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/task-system.md +133 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/workflow.md +75 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/local-architecture/workspace-memory.md +71 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/agents.md +69 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/hooks-and-settings.md +59 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/overview.md +45 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/platform-map.md +45 -0
- package/dist/templates/common/bundled-skills/pactile-meta/references/platform-files/skills-and-commands.md +108 -0
- package/dist/templates/common/bundled-skills/pactile-micro-grill/SKILL.md +68 -0
- package/dist/templates/common/bundled-skills/pactile-skill-creator/SKILL.md +47 -0
- package/dist/templates/common/bundled-skills/pactile-skill-creator/references/authoring-rules.md +171 -0
- package/dist/templates/common/bundled-skills/pactile-skill-creator/references/general-authoring.md +189 -0
- package/dist/templates/common/bundled-skills/pactile-skill-creator/references/pactile-skill-locations.md +52 -0
- package/dist/templates/common/bundled-skills/pactile-skill-creator/references/review-checklist.md +52 -0
- package/dist/templates/common/bundled-skills/pactile-spec-bootstrap/SKILL.md +41 -0
- package/dist/templates/common/bundled-skills/pactile-spec-bootstrap/references/mcp-setup.md +90 -0
- package/dist/templates/common/bundled-skills/pactile-spec-bootstrap/references/repository-analysis.md +59 -0
- package/dist/templates/common/bundled-skills/pactile-spec-bootstrap/references/spec-task-planning.md +61 -0
- package/dist/templates/common/bundled-skills/pactile-spec-bootstrap/references/spec-writing.md +70 -0
- package/dist/templates/common/bundled-skills/smart-search-cli/SKILL.md +393 -0
- package/dist/templates/common/bundled-skills/smart-search-cli/agents/openai.yaml +3 -0
- package/dist/templates/common/bundled-skills/smart-search-cli/examples/batch-search.md +98 -0
- package/dist/templates/common/bundled-skills/smart-search-cli/examples/evidence-gathering.md +89 -0
- package/dist/templates/common/bundled-skills/smart-search-cli/references/cli-contract.md +323 -0
- package/dist/templates/common/commands/continue.md +62 -0
- package/dist/templates/common/commands/finish-work.md +82 -0
- package/dist/templates/common/commands/start.md +66 -0
- package/dist/templates/common/index.d.ts +68 -0
- package/dist/templates/common/index.d.ts.map +1 -0
- package/dist/templates/common/index.js +123 -0
- package/dist/templates/common/index.js.map +1 -0
- package/dist/templates/common/optional-skills/chrome-cdp/SKILL.md +179 -0
- package/dist/templates/common/optional-skills/chrome-cdp/examples/fetch-hook-api-capture.md +149 -0
- package/dist/templates/common/optional-skills/chrome-cdp/scripts/cdp.mjs +904 -0
- package/dist/templates/common/skills/before-dev.md +35 -0
- package/dist/templates/common/skills/brainstorm.md +204 -0
- package/dist/templates/common/skills/break-loop.md +125 -0
- package/dist/templates/common/skills/update-spec.md +364 -0
- package/dist/templates/cursor/agents/pactile-check.md +58 -0
- package/dist/templates/cursor/agents/pactile-implement.md +56 -0
- package/dist/templates/cursor/agents/pactile-research.md +51 -0
- package/dist/templates/cursor/commands/handoff.md +101 -0
- package/dist/templates/cursor/fixtures/expected-rules.d.ts +14 -0
- package/dist/templates/cursor/fixtures/expected-rules.d.ts.map +1 -0
- package/dist/templates/cursor/fixtures/expected-rules.js +20 -0
- package/dist/templates/cursor/fixtures/expected-rules.js.map +1 -0
- package/dist/templates/cursor/hooks.json +52 -0
- package/dist/templates/cursor/index.d.ts +19 -0
- package/dist/templates/cursor/index.d.ts.map +1 -0
- package/dist/templates/cursor/index.js +19 -0
- package/dist/templates/cursor/index.js.map +1 -0
- package/dist/templates/cursor/rules/pactile-bootstrap.mdc +18 -0
- package/dist/templates/cursor/worktrees.json +11 -0
- package/dist/templates/extract.d.ts +38 -0
- package/dist/templates/extract.d.ts.map +1 -0
- package/dist/templates/extract.js +120 -0
- package/dist/templates/extract.js.map +1 -0
- package/dist/templates/markdown/agents.md +14 -0
- package/dist/templates/markdown/framework/artifact-locale-guide.md.txt +93 -0
- package/dist/templates/markdown/framework/cursor-context-injection-guide.md.txt +85 -0
- package/dist/templates/markdown/framework/cursor-native-modes-guide.md.txt +239 -0
- package/dist/templates/markdown/framework/cursor-semantic-compliance.md.txt +41 -0
- package/dist/templates/markdown/framework/cursor-subagent-policy.md.txt +90 -0
- package/dist/templates/markdown/framework/dogfood-only-surfaces.md.txt +28 -0
- package/dist/templates/markdown/framework/execution-strategy.md.txt +45 -0
- package/dist/templates/markdown/framework/index.md.txt +31 -0
- package/dist/templates/markdown/framework/injection-budget-guide.md.txt +111 -0
- package/dist/templates/markdown/framework/internal-skills-cursor-reachability.md.txt +45 -0
- package/dist/templates/markdown/framework/middleware-protocol.md.txt +238 -0
- package/dist/templates/markdown/framework/parallel-first-execution.md.txt +116 -0
- package/dist/templates/markdown/framework/prd-grill-frontier.md.txt +105 -0
- package/dist/templates/markdown/framework/release-boundary.md.txt +30 -0
- package/dist/templates/markdown/framework/retrieval-daily-guide.md.txt +199 -0
- package/dist/templates/markdown/framework/upgrade.md.txt +15 -0
- package/dist/templates/markdown/framework/verification-strength-guide.md.txt +185 -0
- package/dist/templates/markdown/gitignore.txt +15 -0
- package/dist/templates/markdown/index.d.ts +59 -0
- package/dist/templates/markdown/index.d.ts.map +1 -0
- package/dist/templates/markdown/index.js +144 -0
- package/dist/templates/markdown/index.js.map +1 -0
- package/dist/templates/markdown/prompts/run-semantic-slice-12.md.txt +25 -0
- package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
- package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
- package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
- package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
- package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
- package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
- package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +174 -0
- package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +162 -0
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +634 -0
- package/dist/templates/markdown/spec/guides/debug-loop-guide.md.txt +227 -0
- package/dist/templates/markdown/spec/guides/durable-learning-decision-guide.md.txt +76 -0
- package/dist/templates/markdown/spec/guides/e2e-walkthrough-guide.md.txt +93 -0
- package/dist/templates/markdown/spec/guides/index.md.txt +131 -0
- package/dist/templates/markdown/spec/guides/prototype-guide.md.txt +139 -0
- package/dist/templates/markdown/spec/guides/test-discipline-guide.md.txt +179 -0
- package/dist/templates/markdown/workspace-index.md +125 -0
- package/dist/templates/markdown/worktree.yaml.txt +58 -0
- package/dist/templates/pactile/CONTEXT.md +113 -0
- package/dist/templates/pactile/config/execution-strategy-rules.json +31 -0
- package/dist/templates/pactile/config.yaml +130 -0
- package/dist/templates/pactile/docs/adr/README.md +21 -0
- package/dist/templates/pactile/gitignore.txt +35 -0
- package/dist/templates/pactile/index.d.ts +134 -0
- package/dist/templates/pactile/index.d.ts.map +1 -0
- package/dist/templates/pactile/index.js +316 -0
- package/dist/templates/pactile/index.js.map +1 -0
- package/dist/templates/pactile/modules/approval-personal/contract.md +43 -0
- package/dist/templates/pactile/modules/candidate-pool/contract.md +37 -0
- package/dist/templates/pactile/modules/catalog.d.ts +32 -0
- package/dist/templates/pactile/modules/catalog.d.ts.map +1 -0
- package/dist/templates/pactile/modules/catalog.js +46 -0
- package/dist/templates/pactile/modules/catalog.js.map +1 -0
- package/dist/templates/pactile/modules/close-basic/contract.md +38 -0
- package/dist/templates/pactile/modules/context-progressive/contract.md +44 -0
- package/dist/templates/pactile/modules/debug-recovery/contract.md +44 -0
- package/dist/templates/pactile/modules/define-basic/contract.md +39 -0
- package/dist/templates/pactile/modules/define-extended/contract.md +45 -0
- package/dist/templates/pactile/modules/execute-agent/contract.md +38 -0
- package/dist/templates/pactile/modules/independent-check/contract.md +35 -0
- package/dist/templates/pactile/modules/index.json +133 -0
- package/dist/templates/pactile/modules/intake-basic/contract.md +34 -0
- package/dist/templates/pactile/modules/observability-local/contract.md +31 -0
- package/dist/templates/pactile/modules/parent-child/contract.md +45 -0
- package/dist/templates/pactile/modules/personal-memory/contract.md +56 -0
- package/dist/templates/pactile/modules/retention-storage/contract.md +43 -0
- package/dist/templates/pactile/modules/retrieval-extended/contract.md +77 -0
- package/dist/templates/pactile/modules/session-transfer/contract.md +41 -0
- package/dist/templates/pactile/modules/spec-learning/contract.md +50 -0
- package/dist/templates/pactile/modules/vcs-integration/contract.md +46 -0
- package/dist/templates/pactile/modules/verify-basic/contract.md +38 -0
- package/dist/templates/pactile/modules/worker-orchestration/contract.md +47 -0
- package/dist/templates/pactile/pool/README.md +149 -0
- package/dist/templates/pactile/pool/items/.gitkeep +0 -0
- package/dist/templates/pactile/pool/plan.md +50 -0
- package/dist/templates/pactile/scripts/__init__.py +5 -0
- package/dist/templates/pactile/scripts/add_session.py +547 -0
- package/dist/templates/pactile/scripts/build_context_pack.py +17 -0
- package/dist/templates/pactile/scripts/build_retrieval_pack.py +376 -0
- package/dist/templates/pactile/scripts/codegraph_session_smoke.py +76 -0
- package/dist/templates/pactile/scripts/common/__init__.py +103 -0
- package/dist/templates/pactile/scripts/common/active_task.py +576 -0
- package/dist/templates/pactile/scripts/common/adapter_middleware.py +1373 -0
- package/dist/templates/pactile/scripts/common/artifact_locale.py +303 -0
- package/dist/templates/pactile/scripts/common/artifact_search.py +587 -0
- package/dist/templates/pactile/scripts/common/cli_adapter.py +135 -0
- package/dist/templates/pactile/scripts/common/cli_environment.py +155 -0
- package/dist/templates/pactile/scripts/common/codebase_retrieval_router.py +1339 -0
- package/dist/templates/pactile/scripts/common/config.py +497 -0
- package/dist/templates/pactile/scripts/common/context_pack.py +371 -0
- package/dist/templates/pactile/scripts/common/cursor_retrieval_env.py +31 -0
- package/dist/templates/pactile/scripts/common/developer.py +190 -0
- package/dist/templates/pactile/scripts/common/execution_strategy.py +268 -0
- package/dist/templates/pactile/scripts/common/full_quality.py +237 -0
- package/dist/templates/pactile/scripts/common/git.py +37 -0
- package/dist/templates/pactile/scripts/common/git_context.py +198 -0
- package/dist/templates/pactile/scripts/common/injection_budget.py +317 -0
- package/dist/templates/pactile/scripts/common/io.py +37 -0
- package/dist/templates/pactile/scripts/common/kernel_command.py +369 -0
- package/dist/templates/pactile/scripts/common/lite_context.py +280 -0
- package/dist/templates/pactile/scripts/common/log.py +45 -0
- package/dist/templates/pactile/scripts/common/ondemand_topology.py +419 -0
- package/dist/templates/pactile/scripts/common/packages_context.py +239 -0
- package/dist/templates/pactile/scripts/common/pactile_config.py +131 -0
- package/dist/templates/pactile/scripts/common/parallel_declaration.py +369 -0
- package/dist/templates/pactile/scripts/common/parent_orchestration.py +1198 -0
- package/dist/templates/pactile/scripts/common/paths.py +756 -0
- package/dist/templates/pactile/scripts/common/pool_refs.py +119 -0
- package/dist/templates/pactile/scripts/common/pool_slice.py +269 -0
- package/dist/templates/pactile/scripts/common/pool_store.py +766 -0
- package/dist/templates/pactile/scripts/common/project_file_stats.py +91 -0
- package/dist/templates/pactile/scripts/common/retrieval_adapter_metadata.py +943 -0
- package/dist/templates/pactile/scripts/common/retrieval_agent_instructions.py +123 -0
- package/dist/templates/pactile/scripts/common/retrieval_evidence.py +915 -0
- package/dist/templates/pactile/scripts/common/retrieval_pack.py +422 -0
- package/dist/templates/pactile/scripts/common/retrieval_pack_context.py +122 -0
- package/dist/templates/pactile/scripts/common/retrieval_plan_gate.py +61 -0
- package/dist/templates/pactile/scripts/common/retrieval_result_ranking.py +104 -0
- package/dist/templates/pactile/scripts/common/retrieval_tool_classification.py +166 -0
- package/dist/templates/pactile/scripts/common/safe_commit.py +285 -0
- package/dist/templates/pactile/scripts/common/semantic_plan_gate.py +53 -0
- package/dist/templates/pactile/scripts/common/session_context.py +1213 -0
- package/dist/templates/pactile/scripts/common/session_memory.py +386 -0
- package/dist/templates/pactile/scripts/common/session_pack.py +886 -0
- package/dist/templates/pactile/scripts/common/smart_search_evidence.py +514 -0
- package/dist/templates/pactile/scripts/common/smart_search_resolve.py +150 -0
- package/dist/templates/pactile/scripts/common/subagent_dispatch.py +592 -0
- package/dist/templates/pactile/scripts/common/task_context.py +241 -0
- package/dist/templates/pactile/scripts/common/task_dashboard.py +286 -0
- package/dist/templates/pactile/scripts/common/task_dependencies.py +648 -0
- package/dist/templates/pactile/scripts/common/task_gates.py +2478 -0
- package/dist/templates/pactile/scripts/common/task_map.py +703 -0
- package/dist/templates/pactile/scripts/common/task_queue.py +188 -0
- package/dist/templates/pactile/scripts/common/task_store.py +2252 -0
- package/dist/templates/pactile/scripts/common/task_utils.py +274 -0
- package/dist/templates/pactile/scripts/common/tasks.py +231 -0
- package/dist/templates/pactile/scripts/common/test_adapter_middleware.py +199 -0
- package/dist/templates/pactile/scripts/common/test_depends_mode_block.py +509 -0
- package/dist/templates/pactile/scripts/common/test_full_quality.py +197 -0
- package/dist/templates/pactile/scripts/common/test_kernel_command.py +336 -0
- package/dist/templates/pactile/scripts/common/test_lite_path.py +190 -0
- package/dist/templates/pactile/scripts/common/test_observable_defaults.py +141 -0
- package/dist/templates/pactile/scripts/common/test_ondemand_topology.py +237 -0
- package/dist/templates/pactile/scripts/common/test_parallel_declaration.py +264 -0
- package/dist/templates/pactile/scripts/common/test_pool_slice.py +198 -0
- package/dist/templates/pactile/scripts/common/test_pool_store.py +452 -0
- package/dist/templates/pactile/scripts/common/test_retrieval_arbitration.py +331 -0
- package/dist/templates/pactile/scripts/common/test_task_dashboard.py +155 -0
- package/dist/templates/pactile/scripts/common/test_task_dependencies.py +329 -0
- package/dist/templates/pactile/scripts/common/test_task_store_kernel_patch.py +163 -0
- package/dist/templates/pactile/scripts/common/types.py +110 -0
- package/dist/templates/pactile/scripts/common/workflow_phase.py +194 -0
- package/dist/templates/pactile/scripts/compile_session_pack.py +15 -0
- package/dist/templates/pactile/scripts/cursor_retrieval_probe.py +64 -0
- package/dist/templates/pactile/scripts/cursor_retrieval_probe_prompt.md +33 -0
- package/dist/templates/pactile/scripts/generate_dispatch_prompt.py +182 -0
- package/dist/templates/pactile/scripts/get_context.py +19 -0
- package/dist/templates/pactile/scripts/get_developer.py +26 -0
- package/dist/templates/pactile/scripts/hooks/linear_sync.py +243 -0
- package/dist/templates/pactile/scripts/init_developer.py +51 -0
- package/dist/templates/pactile/scripts/injection_budget_probe.py +69 -0
- package/dist/templates/pactile/scripts/pool.py +237 -0
- package/dist/templates/pactile/scripts/rank_retrieval_candidates.py +98 -0
- package/dist/templates/pactile/scripts/retrieval_probe_matrix_template.json +43 -0
- package/dist/templates/pactile/scripts/route_codebase_retrieval.py +72 -0
- package/dist/templates/pactile/scripts/run_smart_search.py +12 -0
- package/dist/templates/pactile/scripts/score_evidence.py +131 -0
- package/dist/templates/pactile/scripts/search_artifacts.py +13 -0
- package/dist/templates/pactile/scripts/search_memory.py +12 -0
- package/dist/templates/pactile/scripts/spec_health_outcomes.py +160 -0
- package/dist/templates/pactile/scripts/task.py +1118 -0
- package/dist/templates/pactile/scripts/verify_evidence_probe.py +138 -0
- package/dist/templates/pactile/tasks/.gitkeep +0 -0
- package/dist/templates/pactile/tasks/locale/en/default-prd.md +27 -0
- package/dist/templates/pactile/tasks/locale/zh/default-prd.md +27 -0
- package/dist/templates/pactile/tasks/templates/release-execution/design.md +61 -0
- package/dist/templates/pactile/tasks/templates/release-execution/handoff-template.md +29 -0
- package/dist/templates/pactile/tasks/templates/release-execution/implement.md +29 -0
- package/dist/templates/pactile/tasks/templates/release-execution/prd.md +31 -0
- package/dist/templates/pactile/tasks/templates/release-readiness/design.md +50 -0
- package/dist/templates/pactile/tasks/templates/release-readiness/handoff-template.md +39 -0
- package/dist/templates/pactile/tasks/templates/release-readiness/implement.md +29 -0
- package/dist/templates/pactile/tasks/templates/release-readiness/prd.md +31 -0
- package/dist/templates/pactile/workflow.md +64 -0
- package/dist/templates/shared-hooks/event-bridge.py +121 -0
- package/dist/templates/shared-hooks/index.d.ts +50 -0
- package/dist/templates/shared-hooks/index.d.ts.map +1 -0
- package/dist/templates/shared-hooks/index.js +96 -0
- package/dist/templates/shared-hooks/index.js.map +1 -0
- package/dist/templates/shared-hooks/inject-retrieval-plan.py +217 -0
- package/dist/templates/shared-hooks/inject-shell-session-context.py +183 -0
- package/dist/templates/shared-hooks/inject-subagent-context.py +267 -0
- package/dist/templates/shared-hooks/inject-workflow-state.py +106 -0
- package/dist/templates/shared-hooks/rename-session-for-task.py +231 -0
- package/dist/templates/shared-hooks/research-end-retrieval-pack.py +345 -0
- package/dist/templates/shared-hooks/session-start.py +355 -0
- package/dist/templates/shared-hooks/spec-write-audit.py +173 -0
- package/dist/templates/template-utils.d.ts +28 -0
- package/dist/templates/template-utils.d.ts.map +1 -0
- package/dist/templates/template-utils.js +83 -0
- package/dist/templates/template-utils.js.map +1 -0
- package/dist/types/ai-tools.d.ts +102 -0
- package/dist/types/ai-tools.d.ts.map +1 -0
- package/dist/types/ai-tools.js +60 -0
- package/dist/types/ai-tools.js.map +1 -0
- package/dist/types/migration.d.ts +125 -0
- package/dist/types/migration.d.ts.map +1 -0
- package/dist/types/migration.js +8 -0
- package/dist/types/migration.js.map +1 -0
- package/dist/utils/agents-md.d.ts +27 -0
- package/dist/utils/agents-md.d.ts.map +1 -0
- package/dist/utils/agents-md.js +70 -0
- package/dist/utils/agents-md.js.map +1 -0
- package/dist/utils/codebase-retrieval-router.d.ts +31 -0
- package/dist/utils/codebase-retrieval-router.d.ts.map +1 -0
- package/dist/utils/codebase-retrieval-router.js +88 -0
- package/dist/utils/codebase-retrieval-router.js.map +1 -0
- package/dist/utils/compare-versions.d.ts +12 -0
- package/dist/utils/compare-versions.d.ts.map +1 -0
- package/dist/utils/compare-versions.js +86 -0
- package/dist/utils/compare-versions.js.map +1 -0
- package/dist/utils/cursor-retrieval-env.d.ts +17 -0
- package/dist/utils/cursor-retrieval-env.d.ts.map +1 -0
- package/dist/utils/cursor-retrieval-env.js +19 -0
- package/dist/utils/cursor-retrieval-env.js.map +1 -0
- package/dist/utils/cwd-guard.d.ts +38 -0
- package/dist/utils/cwd-guard.d.ts.map +1 -0
- package/dist/utils/cwd-guard.js +63 -0
- package/dist/utils/cwd-guard.js.map +1 -0
- package/dist/utils/file-writer.d.ts +36 -0
- package/dist/utils/file-writer.d.ts.map +1 -0
- package/dist/utils/file-writer.js +203 -0
- package/dist/utils/file-writer.js.map +1 -0
- package/dist/utils/manifest-prune.d.ts +59 -0
- package/dist/utils/manifest-prune.d.ts.map +1 -0
- package/dist/utils/manifest-prune.js +176 -0
- package/dist/utils/manifest-prune.js.map +1 -0
- package/dist/utils/mirror-check.d.ts +22 -0
- package/dist/utils/mirror-check.d.ts.map +1 -0
- package/dist/utils/mirror-check.js +90 -0
- package/dist/utils/mirror-check.js.map +1 -0
- package/dist/utils/normalize-text.d.ts +7 -0
- package/dist/utils/normalize-text.d.ts.map +1 -0
- package/dist/utils/normalize-text.js +16 -0
- package/dist/utils/normalize-text.js.map +1 -0
- package/dist/utils/p36-upgrade.d.ts +62 -0
- package/dist/utils/p36-upgrade.d.ts.map +1 -0
- package/dist/utils/p36-upgrade.js +165 -0
- package/dist/utils/p36-upgrade.js.map +1 -0
- package/dist/utils/posix.d.ts +13 -0
- package/dist/utils/posix.d.ts.map +1 -0
- package/dist/utils/posix.js +15 -0
- package/dist/utils/posix.js.map +1 -0
- package/dist/utils/post-update-smoke.d.ts +7 -0
- package/dist/utils/post-update-smoke.d.ts.map +1 -0
- package/dist/utils/post-update-smoke.js +40 -0
- package/dist/utils/post-update-smoke.js.map +1 -0
- package/dist/utils/project-capabilities.d.ts +82 -0
- package/dist/utils/project-capabilities.d.ts.map +1 -0
- package/dist/utils/project-capabilities.js +691 -0
- package/dist/utils/project-capabilities.js.map +1 -0
- package/dist/utils/project-detector.d.ts +46 -0
- package/dist/utils/project-detector.d.ts.map +1 -0
- package/dist/utils/project-detector.js +666 -0
- package/dist/utils/project-detector.js.map +1 -0
- package/dist/utils/proxy.d.ts +25 -0
- package/dist/utils/proxy.d.ts.map +1 -0
- package/dist/utils/proxy.js +60 -0
- package/dist/utils/proxy.js.map +1 -0
- package/dist/utils/readiness.d.ts +40 -0
- package/dist/utils/readiness.d.ts.map +1 -0
- package/dist/utils/readiness.js +491 -0
- package/dist/utils/readiness.js.map +1 -0
- package/dist/utils/retrieval-agent-instructions.d.ts +10 -0
- package/dist/utils/retrieval-agent-instructions.d.ts.map +1 -0
- package/dist/utils/retrieval-agent-instructions.js +97 -0
- package/dist/utils/retrieval-agent-instructions.js.map +1 -0
- package/dist/utils/retrieval-execution-telemetry.d.ts +53 -0
- package/dist/utils/retrieval-execution-telemetry.d.ts.map +1 -0
- package/dist/utils/retrieval-execution-telemetry.js +116 -0
- package/dist/utils/retrieval-execution-telemetry.js.map +1 -0
- package/dist/utils/retrieval-result-ranking.d.ts +34 -0
- package/dist/utils/retrieval-result-ranking.d.ts.map +1 -0
- package/dist/utils/retrieval-result-ranking.js +71 -0
- package/dist/utils/retrieval-result-ranking.js.map +1 -0
- package/dist/utils/retrieval-tool-classification.d.ts +18 -0
- package/dist/utils/retrieval-tool-classification.d.ts.map +1 -0
- package/dist/utils/retrieval-tool-classification.js +118 -0
- package/dist/utils/retrieval-tool-classification.js.map +1 -0
- package/dist/utils/semantic-plan-gate.d.ts +8 -0
- package/dist/utils/semantic-plan-gate.d.ts.map +1 -0
- package/dist/utils/semantic-plan-gate.js +24 -0
- package/dist/utils/semantic-plan-gate.js.map +1 -0
- package/dist/utils/task-json.d.ts +13 -0
- package/dist/utils/task-json.d.ts.map +1 -0
- package/dist/utils/task-json.js +12 -0
- package/dist/utils/task-json.js.map +1 -0
- package/dist/utils/template-fetcher.d.ts +150 -0
- package/dist/utils/template-fetcher.d.ts.map +1 -0
- package/dist/utils/template-fetcher.js +907 -0
- package/dist/utils/template-fetcher.js.map +1 -0
- package/dist/utils/template-hash.d.ts +123 -0
- package/dist/utils/template-hash.d.ts.map +1 -0
- package/dist/utils/template-hash.js +375 -0
- package/dist/utils/template-hash.js.map +1 -0
- package/dist/utils/uninstall-scrubbers.d.ts +30 -0
- package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
- package/dist/utils/uninstall-scrubbers.js +196 -0
- package/dist/utils/uninstall-scrubbers.js.map +1 -0
- package/dist/utils/update-rollout-report.d.ts +171 -0
- package/dist/utils/update-rollout-report.d.ts.map +1 -0
- package/dist/utils/update-rollout-report.js +126 -0
- package/dist/utils/update-rollout-report.js.map +1 -0
- package/dist/utils/validate-rules.d.ts +21 -0
- package/dist/utils/validate-rules.d.ts.map +1 -0
- package/dist/utils/validate-rules.js +88 -0
- package/dist/utils/validate-rules.js.map +1 -0
- package/dist/utils/workflow-dir.d.ts +15 -0
- package/dist/utils/workflow-dir.d.ts.map +1 -0
- package/dist/utils/workflow-dir.js +33 -0
- package/dist/utils/workflow-dir.js.map +1 -0
- package/dist/utils/workflow-resolver.d.ts +86 -0
- package/dist/utils/workflow-resolver.d.ts.map +1 -0
- package/dist/utils/workflow-resolver.js +265 -0
- package/dist/utils/workflow-resolver.js.map +1 -0
- package/package.json +117 -0
- package/scripts/postinstall.js +6 -0
|
@@ -0,0 +1,756 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Common path utilities for Pactile workflow.
|
|
4
|
+
|
|
5
|
+
Provides:
|
|
6
|
+
get_repo_root - Get repository root directory
|
|
7
|
+
get_developer - Get developer name
|
|
8
|
+
get_workspace_dir - Get developer workspace directory
|
|
9
|
+
get_tasks_dir - Get tasks directory
|
|
10
|
+
get_active_journal_file - Get current journal file
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import re
|
|
16
|
+
from datetime import datetime
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
from typing import cast
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
# =============================================================================
|
|
22
|
+
# Path Constants (change here to rename directories)
|
|
23
|
+
# =============================================================================
|
|
24
|
+
|
|
25
|
+
# Directory names
|
|
26
|
+
DIR_WORKFLOW = ".pactile"
|
|
27
|
+
DIR_WORKSPACE = "workspace"
|
|
28
|
+
DIR_TASKS = "tasks"
|
|
29
|
+
DIR_ARCHIVE = "archive"
|
|
30
|
+
DIR_SPEC = "spec"
|
|
31
|
+
DIR_SCRIPTS = "scripts"
|
|
32
|
+
|
|
33
|
+
# File names
|
|
34
|
+
FILE_DEVELOPER = ".developer"
|
|
35
|
+
FILE_CURRENT_TASK = ".current-task"
|
|
36
|
+
FILE_TASK_JSON = "task.json"
|
|
37
|
+
FILE_JOURNAL_PREFIX = "journal-"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# =============================================================================
|
|
41
|
+
# Repository Root
|
|
42
|
+
# =============================================================================
|
|
43
|
+
|
|
44
|
+
def get_repo_root(start_path: Path | None = None) -> Path:
|
|
45
|
+
"""Find the nearest directory containing .pactile/ folder.
|
|
46
|
+
|
|
47
|
+
This handles nested git repos correctly (e.g., test project inside another repo).
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
start_path: Starting directory to search from. Defaults to current directory.
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
Path to repository root, or current directory if no .pactile/ found.
|
|
54
|
+
"""
|
|
55
|
+
current = (start_path or Path.cwd()).resolve()
|
|
56
|
+
|
|
57
|
+
while current != current.parent:
|
|
58
|
+
if (current / DIR_WORKFLOW).is_dir():
|
|
59
|
+
return current
|
|
60
|
+
current = current.parent
|
|
61
|
+
|
|
62
|
+
# Fallback to current directory if no .pactile/ found
|
|
63
|
+
return Path.cwd().resolve()
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
# =============================================================================
|
|
67
|
+
# Developer
|
|
68
|
+
# =============================================================================
|
|
69
|
+
|
|
70
|
+
def get_developer(repo_root: Path | None = None) -> str | None:
|
|
71
|
+
"""Get developer name from .developer file.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
repo_root: Repository root path. Defaults to auto-detected.
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
Developer name or None if not initialized.
|
|
78
|
+
"""
|
|
79
|
+
if repo_root is None:
|
|
80
|
+
repo_root = get_repo_root()
|
|
81
|
+
|
|
82
|
+
dev_file = repo_root / DIR_WORKFLOW / FILE_DEVELOPER
|
|
83
|
+
|
|
84
|
+
if not dev_file.is_file():
|
|
85
|
+
return None
|
|
86
|
+
|
|
87
|
+
try:
|
|
88
|
+
content = dev_file.read_text(encoding="utf-8")
|
|
89
|
+
for line in content.splitlines():
|
|
90
|
+
if line.startswith("name="):
|
|
91
|
+
return line.split("=", 1)[1].strip()
|
|
92
|
+
except (OSError, IOError):
|
|
93
|
+
pass
|
|
94
|
+
|
|
95
|
+
return None
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def check_developer(repo_root: Path | None = None) -> bool:
|
|
99
|
+
"""Check if developer is initialized.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
repo_root: Repository root path. Defaults to auto-detected.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
True if developer is initialized.
|
|
106
|
+
"""
|
|
107
|
+
return get_developer(repo_root) is not None
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
# =============================================================================
|
|
111
|
+
# Tasks Directory
|
|
112
|
+
# =============================================================================
|
|
113
|
+
|
|
114
|
+
def get_tasks_dir(repo_root: Path | None = None) -> Path:
|
|
115
|
+
"""Get tasks directory path.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
repo_root: Repository root path. Defaults to auto-detected.
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
Path to tasks directory.
|
|
122
|
+
"""
|
|
123
|
+
if repo_root is None:
|
|
124
|
+
repo_root = get_repo_root()
|
|
125
|
+
return repo_root / DIR_WORKFLOW / DIR_TASKS
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
# =============================================================================
|
|
129
|
+
# Workspace Directory
|
|
130
|
+
# =============================================================================
|
|
131
|
+
|
|
132
|
+
def get_workspace_dir(repo_root: Path | None = None) -> Path | None:
|
|
133
|
+
"""Get developer workspace directory.
|
|
134
|
+
|
|
135
|
+
Args:
|
|
136
|
+
repo_root: Repository root path. Defaults to auto-detected.
|
|
137
|
+
|
|
138
|
+
Returns:
|
|
139
|
+
Path to workspace directory or None if developer not set.
|
|
140
|
+
"""
|
|
141
|
+
if repo_root is None:
|
|
142
|
+
repo_root = get_repo_root()
|
|
143
|
+
|
|
144
|
+
developer = get_developer(repo_root)
|
|
145
|
+
if developer:
|
|
146
|
+
return repo_root / DIR_WORKFLOW / DIR_WORKSPACE / developer
|
|
147
|
+
return None
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
# =============================================================================
|
|
151
|
+
# Journal File
|
|
152
|
+
# =============================================================================
|
|
153
|
+
|
|
154
|
+
def get_active_journal_file(repo_root: Path | None = None) -> Path | None:
|
|
155
|
+
"""Get the current active journal file.
|
|
156
|
+
|
|
157
|
+
Args:
|
|
158
|
+
repo_root: Repository root path. Defaults to auto-detected.
|
|
159
|
+
|
|
160
|
+
Returns:
|
|
161
|
+
Path to active journal file or None if not found.
|
|
162
|
+
"""
|
|
163
|
+
if repo_root is None:
|
|
164
|
+
repo_root = get_repo_root()
|
|
165
|
+
|
|
166
|
+
workspace_dir = get_workspace_dir(repo_root)
|
|
167
|
+
if workspace_dir is None or not workspace_dir.is_dir():
|
|
168
|
+
return None
|
|
169
|
+
|
|
170
|
+
latest: Path | None = None
|
|
171
|
+
highest = 0
|
|
172
|
+
|
|
173
|
+
for f in workspace_dir.glob(f"{FILE_JOURNAL_PREFIX}*.md"):
|
|
174
|
+
if not f.is_file():
|
|
175
|
+
continue
|
|
176
|
+
|
|
177
|
+
# Extract number from filename
|
|
178
|
+
name = f.stem # e.g., "journal-1"
|
|
179
|
+
match = re.search(r"(\d+)$", name)
|
|
180
|
+
if match:
|
|
181
|
+
num = int(match.group(1))
|
|
182
|
+
if num > highest:
|
|
183
|
+
highest = num
|
|
184
|
+
latest = f
|
|
185
|
+
|
|
186
|
+
return latest
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
def count_lines(file_path: Path) -> int:
|
|
190
|
+
"""Count lines in a file.
|
|
191
|
+
|
|
192
|
+
Args:
|
|
193
|
+
file_path: Path to file.
|
|
194
|
+
|
|
195
|
+
Returns:
|
|
196
|
+
Number of lines, or 0 if file doesn't exist.
|
|
197
|
+
"""
|
|
198
|
+
if not file_path.is_file():
|
|
199
|
+
return 0
|
|
200
|
+
|
|
201
|
+
try:
|
|
202
|
+
return len(file_path.read_text(encoding="utf-8").splitlines())
|
|
203
|
+
except (OSError, IOError):
|
|
204
|
+
return 0
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
# =============================================================================
|
|
208
|
+
# Selected Task Management
|
|
209
|
+
# =============================================================================
|
|
210
|
+
|
|
211
|
+
def normalize_task_ref(task_ref: str) -> str:
|
|
212
|
+
"""Normalize a task ref for stable runtime storage.
|
|
213
|
+
|
|
214
|
+
Stored refs should prefer repo-relative POSIX paths like
|
|
215
|
+
`.pactile/tasks/03-27-my-task`, even on Windows. Absolute paths are preserved
|
|
216
|
+
unless they can later be converted back to repo-relative form by callers.
|
|
217
|
+
"""
|
|
218
|
+
normalized = task_ref.strip()
|
|
219
|
+
if not normalized:
|
|
220
|
+
return ""
|
|
221
|
+
|
|
222
|
+
path_obj = Path(normalized)
|
|
223
|
+
if path_obj.is_absolute():
|
|
224
|
+
return str(path_obj)
|
|
225
|
+
|
|
226
|
+
normalized = normalized.replace("\\", "/")
|
|
227
|
+
while normalized.startswith("./"):
|
|
228
|
+
normalized = normalized[2:]
|
|
229
|
+
|
|
230
|
+
if normalized.startswith(f"{DIR_TASKS}/"):
|
|
231
|
+
return f"{DIR_WORKFLOW}/{normalized}"
|
|
232
|
+
|
|
233
|
+
return normalized
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
def resolve_task_ref(task_ref: str, repo_root: Path | None = None) -> Path | None:
|
|
237
|
+
"""Resolve a task ref to an absolute task directory path."""
|
|
238
|
+
if repo_root is None:
|
|
239
|
+
repo_root = get_repo_root()
|
|
240
|
+
|
|
241
|
+
normalized = normalize_task_ref(task_ref)
|
|
242
|
+
if not normalized:
|
|
243
|
+
return None
|
|
244
|
+
|
|
245
|
+
path_obj = Path(normalized)
|
|
246
|
+
if path_obj.is_absolute():
|
|
247
|
+
return path_obj
|
|
248
|
+
|
|
249
|
+
if normalized.startswith(f"{DIR_WORKFLOW}/"):
|
|
250
|
+
return repo_root / path_obj
|
|
251
|
+
|
|
252
|
+
return repo_root / DIR_WORKFLOW / DIR_TASKS / path_obj
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def get_selected_task(
|
|
256
|
+
repo_root: Path | None = None,
|
|
257
|
+
platform_input: dict | None = None,
|
|
258
|
+
platform: str | None = None,
|
|
259
|
+
) -> str | None:
|
|
260
|
+
"""Get selected task directory path (relative to repo_root).
|
|
261
|
+
|
|
262
|
+
Args:
|
|
263
|
+
repo_root: Repository root path. Defaults to auto-detected.
|
|
264
|
+
|
|
265
|
+
Returns:
|
|
266
|
+
Relative path to selected task directory or None.
|
|
267
|
+
"""
|
|
268
|
+
if repo_root is None:
|
|
269
|
+
repo_root = get_repo_root()
|
|
270
|
+
|
|
271
|
+
from .active_task import resolve_selected_task
|
|
272
|
+
|
|
273
|
+
return resolve_selected_task(repo_root, platform_input, platform).task_path
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
def get_selected_task_abs(
|
|
277
|
+
repo_root: Path | None = None,
|
|
278
|
+
platform_input: dict | None = None,
|
|
279
|
+
platform: str | None = None,
|
|
280
|
+
) -> Path | None:
|
|
281
|
+
"""Get selected task directory absolute path.
|
|
282
|
+
|
|
283
|
+
Args:
|
|
284
|
+
repo_root: Repository root path. Defaults to auto-detected.
|
|
285
|
+
|
|
286
|
+
Returns:
|
|
287
|
+
Absolute path to selected task directory or None.
|
|
288
|
+
"""
|
|
289
|
+
if repo_root is None:
|
|
290
|
+
repo_root = get_repo_root()
|
|
291
|
+
|
|
292
|
+
relative = get_selected_task(repo_root, platform_input, platform)
|
|
293
|
+
if relative:
|
|
294
|
+
return resolve_task_ref(relative, repo_root)
|
|
295
|
+
return None
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
def get_selected_task_source(
|
|
299
|
+
repo_root: Path | None = None,
|
|
300
|
+
platform_input: dict | None = None,
|
|
301
|
+
platform: str | None = None,
|
|
302
|
+
) -> tuple[str, str | None, str | None]:
|
|
303
|
+
"""Get selected task source as (`source`, `context_key`, `task_path`)."""
|
|
304
|
+
if repo_root is None:
|
|
305
|
+
repo_root = get_repo_root()
|
|
306
|
+
|
|
307
|
+
from .active_task import get_selected_task_source as _get_source
|
|
308
|
+
|
|
309
|
+
return _get_source(repo_root, platform_input, platform)
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
def set_selected_task(
|
|
313
|
+
task_path: str,
|
|
314
|
+
repo_root: Path | None = None,
|
|
315
|
+
platform_input: dict | None = None,
|
|
316
|
+
platform: str | None = None,
|
|
317
|
+
) -> bool:
|
|
318
|
+
"""Set selected task in session scope.
|
|
319
|
+
|
|
320
|
+
Args:
|
|
321
|
+
task_path: Task directory path (relative to repo_root).
|
|
322
|
+
repo_root: Repository root path. Defaults to auto-detected.
|
|
323
|
+
|
|
324
|
+
Returns:
|
|
325
|
+
True on success, False on error.
|
|
326
|
+
"""
|
|
327
|
+
if repo_root is None:
|
|
328
|
+
repo_root = get_repo_root()
|
|
329
|
+
|
|
330
|
+
from .active_task import set_selected_task as _set_selected_task
|
|
331
|
+
|
|
332
|
+
return _set_selected_task(
|
|
333
|
+
task_path,
|
|
334
|
+
repo_root,
|
|
335
|
+
platform_input=platform_input,
|
|
336
|
+
platform=platform,
|
|
337
|
+
) is not None
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
def clear_selected_task(
|
|
341
|
+
repo_root: Path | None = None,
|
|
342
|
+
platform_input: dict | None = None,
|
|
343
|
+
platform: str | None = None,
|
|
344
|
+
) -> bool:
|
|
345
|
+
"""Clear selected task in session scope.
|
|
346
|
+
|
|
347
|
+
Args:
|
|
348
|
+
repo_root: Repository root path. Defaults to auto-detected.
|
|
349
|
+
|
|
350
|
+
Returns:
|
|
351
|
+
True on success.
|
|
352
|
+
"""
|
|
353
|
+
if repo_root is None:
|
|
354
|
+
repo_root = get_repo_root()
|
|
355
|
+
|
|
356
|
+
from .active_task import clear_selected_task as _clear_selected_task
|
|
357
|
+
|
|
358
|
+
_clear_selected_task(
|
|
359
|
+
repo_root,
|
|
360
|
+
platform_input=platform_input,
|
|
361
|
+
platform=platform,
|
|
362
|
+
)
|
|
363
|
+
return True
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
def has_selected_task(repo_root: Path | None = None) -> bool:
|
|
367
|
+
"""Check if a selected task exists.
|
|
368
|
+
|
|
369
|
+
Args:
|
|
370
|
+
repo_root: Repository root path. Defaults to auto-detected.
|
|
371
|
+
|
|
372
|
+
Returns:
|
|
373
|
+
True if selected task is set.
|
|
374
|
+
"""
|
|
375
|
+
return get_selected_task(repo_root) is not None
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
# Internal compatibility aliases. New user-facing code should use selected-task
|
|
379
|
+
# names; existing internal helpers can migrate incrementally.
|
|
380
|
+
get_current_task = get_selected_task
|
|
381
|
+
get_current_task_abs = get_selected_task_abs
|
|
382
|
+
get_current_task_source = get_selected_task_source
|
|
383
|
+
set_current_task = set_selected_task
|
|
384
|
+
clear_current_task = clear_selected_task
|
|
385
|
+
has_current_task = has_selected_task
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
# =============================================================================
|
|
389
|
+
# Task ID Generation
|
|
390
|
+
# =============================================================================
|
|
391
|
+
|
|
392
|
+
def generate_task_date_prefix() -> str:
|
|
393
|
+
"""Generate task ID based on date (MM-DD format).
|
|
394
|
+
|
|
395
|
+
Returns:
|
|
396
|
+
Date prefix string (e.g., "01-21").
|
|
397
|
+
"""
|
|
398
|
+
return datetime.now().strftime("%m-%d")
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
# =============================================================================
|
|
402
|
+
# Monorepo / Package Paths
|
|
403
|
+
# =============================================================================
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
def get_spec_dir(package: str | None = None, repo_root: Path | None = None) -> Path:
|
|
407
|
+
"""Get the spec directory path.
|
|
408
|
+
|
|
409
|
+
Single-repo: .pactile/spec
|
|
410
|
+
Monorepo with package: .pactile/spec/<package>
|
|
411
|
+
|
|
412
|
+
Uses lazy import to avoid circular dependency with config.py.
|
|
413
|
+
"""
|
|
414
|
+
if repo_root is None:
|
|
415
|
+
repo_root = get_repo_root()
|
|
416
|
+
|
|
417
|
+
from .config import get_spec_base
|
|
418
|
+
|
|
419
|
+
base = get_spec_base(package, repo_root)
|
|
420
|
+
return repo_root / DIR_WORKFLOW / base
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
def get_package_path(package: str, repo_root: Path | None = None) -> Path | None:
|
|
424
|
+
"""Get a package's source directory absolute path from config.
|
|
425
|
+
|
|
426
|
+
Returns:
|
|
427
|
+
Absolute path to the package directory, or None if not found.
|
|
428
|
+
"""
|
|
429
|
+
if repo_root is None:
|
|
430
|
+
repo_root = get_repo_root()
|
|
431
|
+
|
|
432
|
+
from .config import get_packages
|
|
433
|
+
|
|
434
|
+
packages = get_packages(repo_root)
|
|
435
|
+
if not packages or package not in packages:
|
|
436
|
+
return None
|
|
437
|
+
|
|
438
|
+
info = packages[package]
|
|
439
|
+
if isinstance(info, dict):
|
|
440
|
+
rel_path = info.get("path", package)
|
|
441
|
+
else:
|
|
442
|
+
rel_path = str(info)
|
|
443
|
+
|
|
444
|
+
return repo_root / rel_path
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
# =============================================================================
|
|
448
|
+
# Main Entry (for testing)
|
|
449
|
+
# =============================================================================
|
|
450
|
+
|
|
451
|
+
# =============================================================================
|
|
452
|
+
# Pactile canonical-only Runtime foundation (legacy helpers above stay unchanged)
|
|
453
|
+
# =============================================================================
|
|
454
|
+
|
|
455
|
+
# Frozen B0 CanonicalPathsV1 mirror. The JSON ABI has corpus parity with TS.
|
|
456
|
+
PACTILE_PATHS_V1 = {
|
|
457
|
+
"canonicalRoot": ".pactile",
|
|
458
|
+
"installStatePath": ".pactile/runtime/install-state.json",
|
|
459
|
+
"generationsPath": ".pactile/runtime/generations",
|
|
460
|
+
"tilesPath": ".pactile/tiles",
|
|
461
|
+
"tasksPath": ".pactile/tasks",
|
|
462
|
+
"archivePath": ".pactile/archive",
|
|
463
|
+
"workspacePath": ".pactile/workspace",
|
|
464
|
+
"ownershipLedgerPath": ".pactile/runtime/ownership-ledger.json",
|
|
465
|
+
"migrationJournalsPath": ".pactile/runtime/migrations",
|
|
466
|
+
"receiptsPath": ".pactile/runtime/receipts",
|
|
467
|
+
}
|
|
468
|
+
# Pinned Unicode 15.0.0 full casefold, same generated table as case-fold.ts.
|
|
469
|
+
_PACTILE_FOLD_RANGES = [[65,90,32],[181,181,775],[192,214,32],[216,222,32],[256,256,1],[258,258,1],[260,260,1],[262,262,1],[264,264,1],[266,266,1],[268,268,1],[270,270,1],[272,272,1],[274,274,1],[276,276,1],[278,278,1],[280,280,1],[282,282,1],[284,284,1],[286,286,1],[288,288,1],[290,290,1],[292,292,1],[294,294,1],[296,296,1],[298,298,1],[300,300,1],[302,302,1],[306,306,1],[308,308,1],[310,310,1],[313,313,1],[315,315,1],[317,317,1],[319,319,1],[321,321,1],[323,323,1],[325,325,1],[327,327,1],[330,330,1],[332,332,1],[334,334,1],[336,336,1],[338,338,1],[340,340,1],[342,342,1],[344,344,1],[346,346,1],[348,348,1],[350,350,1],[352,352,1],[354,354,1],[356,356,1],[358,358,1],[360,360,1],[362,362,1],[364,364,1],[366,366,1],[368,368,1],[370,370,1],[372,372,1],[374,374,1],[376,376,-121],[377,377,1],[379,379,1],[381,381,1],[383,383,-268],[385,385,210],[386,386,1],[388,388,1],[390,390,206],[391,391,1],[393,394,205],[395,395,1],[398,398,79],[399,399,202],[400,400,203],[401,401,1],[403,403,205],[404,404,207],[406,406,211],[407,407,209],[408,408,1],[412,412,211],[413,413,213],[415,415,214],[416,416,1],[418,418,1],[420,420,1],[422,422,218],[423,423,1],[425,425,218],[428,428,1],[430,430,218],[431,431,1],[433,434,217],[435,435,1],[437,437,1],[439,439,219],[440,440,1],[444,444,1],[452,452,2],[453,453,1],[455,455,2],[456,456,1],[458,458,2],[459,459,1],[461,461,1],[463,463,1],[465,465,1],[467,467,1],[469,469,1],[471,471,1],[473,473,1],[475,475,1],[478,478,1],[480,480,1],[482,482,1],[484,484,1],[486,486,1],[488,488,1],[490,490,1],[492,492,1],[494,494,1],[497,497,2],[498,498,1],[500,500,1],[502,502,-97],[503,503,-56],[504,504,1],[506,506,1],[508,508,1],[510,510,1],[512,512,1],[514,514,1],[516,516,1],[518,518,1],[520,520,1],[522,522,1],[524,524,1],[526,526,1],[528,528,1],[530,530,1],[532,532,1],[534,534,1],[536,536,1],[538,538,1],[540,540,1],[542,542,1],[544,544,-130],[546,546,1],[548,548,1],[550,550,1],[552,552,1],[554,554,1],[556,556,1],[558,558,1],[560,560,1],[562,562,1],[570,570,10795],[571,571,1],[573,573,-163],[574,574,10792],[577,577,1],[579,579,-195],[580,580,69],[581,581,71],[582,582,1],[584,584,1],[586,586,1],[588,588,1],[590,590,1],[837,837,116],[880,880,1],[882,882,1],[886,886,1],[895,895,116],[902,902,38],[904,906,37],[908,908,64],[910,911,63],[913,929,32],[931,939,32],[962,962,1],[975,975,8],[976,976,-30],[977,977,-25],[981,981,-15],[982,982,-22],[984,984,1],[986,986,1],[988,988,1],[990,990,1],[992,992,1],[994,994,1],[996,996,1],[998,998,1],[1000,1000,1],[1002,1002,1],[1004,1004,1],[1006,1006,1],[1008,1008,-54],[1009,1009,-48],[1012,1012,-60],[1013,1013,-64],[1015,1015,1],[1017,1017,-7],[1018,1018,1],[1021,1023,-130],[1024,1039,80],[1040,1071,32],[1120,1120,1],[1122,1122,1],[1124,1124,1],[1126,1126,1],[1128,1128,1],[1130,1130,1],[1132,1132,1],[1134,1134,1],[1136,1136,1],[1138,1138,1],[1140,1140,1],[1142,1142,1],[1144,1144,1],[1146,1146,1],[1148,1148,1],[1150,1150,1],[1152,1152,1],[1162,1162,1],[1164,1164,1],[1166,1166,1],[1168,1168,1],[1170,1170,1],[1172,1172,1],[1174,1174,1],[1176,1176,1],[1178,1178,1],[1180,1180,1],[1182,1182,1],[1184,1184,1],[1186,1186,1],[1188,1188,1],[1190,1190,1],[1192,1192,1],[1194,1194,1],[1196,1196,1],[1198,1198,1],[1200,1200,1],[1202,1202,1],[1204,1204,1],[1206,1206,1],[1208,1208,1],[1210,1210,1],[1212,1212,1],[1214,1214,1],[1216,1216,15],[1217,1217,1],[1219,1219,1],[1221,1221,1],[1223,1223,1],[1225,1225,1],[1227,1227,1],[1229,1229,1],[1232,1232,1],[1234,1234,1],[1236,1236,1],[1238,1238,1],[1240,1240,1],[1242,1242,1],[1244,1244,1],[1246,1246,1],[1248,1248,1],[1250,1250,1],[1252,1252,1],[1254,1254,1],[1256,1256,1],[1258,1258,1],[1260,1260,1],[1262,1262,1],[1264,1264,1],[1266,1266,1],[1268,1268,1],[1270,1270,1],[1272,1272,1],[1274,1274,1],[1276,1276,1],[1278,1278,1],[1280,1280,1],[1282,1282,1],[1284,1284,1],[1286,1286,1],[1288,1288,1],[1290,1290,1],[1292,1292,1],[1294,1294,1],[1296,1296,1],[1298,1298,1],[1300,1300,1],[1302,1302,1],[1304,1304,1],[1306,1306,1],[1308,1308,1],[1310,1310,1],[1312,1312,1],[1314,1314,1],[1316,1316,1],[1318,1318,1],[1320,1320,1],[1322,1322,1],[1324,1324,1],[1326,1326,1],[1329,1366,48],[4256,4293,7264],[4295,4295,7264],[4301,4301,7264],[5112,5117,-8],[7296,7296,-6222],[7297,7297,-6221],[7298,7298,-6212],[7299,7300,-6210],[7301,7301,-6211],[7302,7302,-6204],[7303,7303,-6180],[7304,7304,35267],[7312,7354,-3008],[7357,7359,-3008],[7680,7680,1],[7682,7682,1],[7684,7684,1],[7686,7686,1],[7688,7688,1],[7690,7690,1],[7692,7692,1],[7694,7694,1],[7696,7696,1],[7698,7698,1],[7700,7700,1],[7702,7702,1],[7704,7704,1],[7706,7706,1],[7708,7708,1],[7710,7710,1],[7712,7712,1],[7714,7714,1],[7716,7716,1],[7718,7718,1],[7720,7720,1],[7722,7722,1],[7724,7724,1],[7726,7726,1],[7728,7728,1],[7730,7730,1],[7732,7732,1],[7734,7734,1],[7736,7736,1],[7738,7738,1],[7740,7740,1],[7742,7742,1],[7744,7744,1],[7746,7746,1],[7748,7748,1],[7750,7750,1],[7752,7752,1],[7754,7754,1],[7756,7756,1],[7758,7758,1],[7760,7760,1],[7762,7762,1],[7764,7764,1],[7766,7766,1],[7768,7768,1],[7770,7770,1],[7772,7772,1],[7774,7774,1],[7776,7776,1],[7778,7778,1],[7780,7780,1],[7782,7782,1],[7784,7784,1],[7786,7786,1],[7788,7788,1],[7790,7790,1],[7792,7792,1],[7794,7794,1],[7796,7796,1],[7798,7798,1],[7800,7800,1],[7802,7802,1],[7804,7804,1],[7806,7806,1],[7808,7808,1],[7810,7810,1],[7812,7812,1],[7814,7814,1],[7816,7816,1],[7818,7818,1],[7820,7820,1],[7822,7822,1],[7824,7824,1],[7826,7826,1],[7828,7828,1],[7835,7835,-58],[7840,7840,1],[7842,7842,1],[7844,7844,1],[7846,7846,1],[7848,7848,1],[7850,7850,1],[7852,7852,1],[7854,7854,1],[7856,7856,1],[7858,7858,1],[7860,7860,1],[7862,7862,1],[7864,7864,1],[7866,7866,1],[7868,7868,1],[7870,7870,1],[7872,7872,1],[7874,7874,1],[7876,7876,1],[7878,7878,1],[7880,7880,1],[7882,7882,1],[7884,7884,1],[7886,7886,1],[7888,7888,1],[7890,7890,1],[7892,7892,1],[7894,7894,1],[7896,7896,1],[7898,7898,1],[7900,7900,1],[7902,7902,1],[7904,7904,1],[7906,7906,1],[7908,7908,1],[7910,7910,1],[7912,7912,1],[7914,7914,1],[7916,7916,1],[7918,7918,1],[7920,7920,1],[7922,7922,1],[7924,7924,1],[7926,7926,1],[7928,7928,1],[7930,7930,1],[7932,7932,1],[7934,7934,1],[7944,7951,-8],[7960,7965,-8],[7976,7983,-8],[7992,7999,-8],[8008,8013,-8],[8025,8025,-8],[8027,8027,-8],[8029,8029,-8],[8031,8031,-8],[8040,8047,-8],[8120,8121,-8],[8122,8123,-74],[8126,8126,-7173],[8136,8139,-86],[8152,8153,-8],[8154,8155,-100],[8168,8169,-8],[8170,8171,-112],[8172,8172,-7],[8184,8185,-128],[8186,8187,-126],[8486,8486,-7517],[8490,8490,-8383],[8491,8491,-8262],[8498,8498,28],[8544,8559,16],[8579,8579,1],[9398,9423,26],[11264,11311,48],[11360,11360,1],[11362,11362,-10743],[11363,11363,-3814],[11364,11364,-10727],[11367,11367,1],[11369,11369,1],[11371,11371,1],[11373,11373,-10780],[11374,11374,-10749],[11375,11375,-10783],[11376,11376,-10782],[11378,11378,1],[11381,11381,1],[11390,11391,-10815],[11392,11392,1],[11394,11394,1],[11396,11396,1],[11398,11398,1],[11400,11400,1],[11402,11402,1],[11404,11404,1],[11406,11406,1],[11408,11408,1],[11410,11410,1],[11412,11412,1],[11414,11414,1],[11416,11416,1],[11418,11418,1],[11420,11420,1],[11422,11422,1],[11424,11424,1],[11426,11426,1],[11428,11428,1],[11430,11430,1],[11432,11432,1],[11434,11434,1],[11436,11436,1],[11438,11438,1],[11440,11440,1],[11442,11442,1],[11444,11444,1],[11446,11446,1],[11448,11448,1],[11450,11450,1],[11452,11452,1],[11454,11454,1],[11456,11456,1],[11458,11458,1],[11460,11460,1],[11462,11462,1],[11464,11464,1],[11466,11466,1],[11468,11468,1],[11470,11470,1],[11472,11472,1],[11474,11474,1],[11476,11476,1],[11478,11478,1],[11480,11480,1],[11482,11482,1],[11484,11484,1],[11486,11486,1],[11488,11488,1],[11490,11490,1],[11499,11499,1],[11501,11501,1],[11506,11506,1],[42560,42560,1],[42562,42562,1],[42564,42564,1],[42566,42566,1],[42568,42568,1],[42570,42570,1],[42572,42572,1],[42574,42574,1],[42576,42576,1],[42578,42578,1],[42580,42580,1],[42582,42582,1],[42584,42584,1],[42586,42586,1],[42588,42588,1],[42590,42590,1],[42592,42592,1],[42594,42594,1],[42596,42596,1],[42598,42598,1],[42600,42600,1],[42602,42602,1],[42604,42604,1],[42624,42624,1],[42626,42626,1],[42628,42628,1],[42630,42630,1],[42632,42632,1],[42634,42634,1],[42636,42636,1],[42638,42638,1],[42640,42640,1],[42642,42642,1],[42644,42644,1],[42646,42646,1],[42648,42648,1],[42650,42650,1],[42786,42786,1],[42788,42788,1],[42790,42790,1],[42792,42792,1],[42794,42794,1],[42796,42796,1],[42798,42798,1],[42802,42802,1],[42804,42804,1],[42806,42806,1],[42808,42808,1],[42810,42810,1],[42812,42812,1],[42814,42814,1],[42816,42816,1],[42818,42818,1],[42820,42820,1],[42822,42822,1],[42824,42824,1],[42826,42826,1],[42828,42828,1],[42830,42830,1],[42832,42832,1],[42834,42834,1],[42836,42836,1],[42838,42838,1],[42840,42840,1],[42842,42842,1],[42844,42844,1],[42846,42846,1],[42848,42848,1],[42850,42850,1],[42852,42852,1],[42854,42854,1],[42856,42856,1],[42858,42858,1],[42860,42860,1],[42862,42862,1],[42873,42873,1],[42875,42875,1],[42877,42877,-35332],[42878,42878,1],[42880,42880,1],[42882,42882,1],[42884,42884,1],[42886,42886,1],[42891,42891,1],[42893,42893,-42280],[42896,42896,1],[42898,42898,1],[42902,42902,1],[42904,42904,1],[42906,42906,1],[42908,42908,1],[42910,42910,1],[42912,42912,1],[42914,42914,1],[42916,42916,1],[42918,42918,1],[42920,42920,1],[42922,42922,-42308],[42923,42923,-42319],[42924,42924,-42315],[42925,42925,-42305],[42926,42926,-42308],[42928,42928,-42258],[42929,42929,-42282],[42930,42930,-42261],[42931,42931,928],[42932,42932,1],[42934,42934,1],[42936,42936,1],[42938,42938,1],[42940,42940,1],[42942,42942,1],[42944,42944,1],[42946,42946,1],[42948,42948,-48],[42949,42949,-42307],[42950,42950,-35384],[42951,42951,1],[42953,42953,1],[42960,42960,1],[42966,42966,1],[42968,42968,1],[42997,42997,1],[43888,43967,-38864],[65313,65338,32],[66560,66599,40],[66736,66771,40],[66928,66938,39],[66940,66954,39],[66956,66962,39],[66964,66965,39],[68736,68786,64],[71840,71871,32],[93760,93791,32],[125184,125217,34]]
|
|
470
|
+
_PACTILE_FOLD_SPECIAL: dict[int, str] = dict(cast(list[tuple[int, str]], [[223,"ss"],[304,"i̇"],[329,"ʼn"],[496,"ǰ"],[912,"ΐ"],[944,"ΰ"],[1415,"եւ"],[7830,"ẖ"],[7831,"ẗ"],[7832,"ẘ"],[7833,"ẙ"],[7834,"aʾ"],[7838,"ss"],[8016,"ὐ"],[8018,"ὒ"],[8020,"ὔ"],[8022,"ὖ"],[8064,"ἀι"],[8065,"ἁι"],[8066,"ἂι"],[8067,"ἃι"],[8068,"ἄι"],[8069,"ἅι"],[8070,"ἆι"],[8071,"ἇι"],[8072,"ἀι"],[8073,"ἁι"],[8074,"ἂι"],[8075,"ἃι"],[8076,"ἄι"],[8077,"ἅι"],[8078,"ἆι"],[8079,"ἇι"],[8080,"ἠι"],[8081,"ἡι"],[8082,"ἢι"],[8083,"ἣι"],[8084,"ἤι"],[8085,"ἥι"],[8086,"ἦι"],[8087,"ἧι"],[8088,"ἠι"],[8089,"ἡι"],[8090,"ἢι"],[8091,"ἣι"],[8092,"ἤι"],[8093,"ἥι"],[8094,"ἦι"],[8095,"ἧι"],[8096,"ὠι"],[8097,"ὡι"],[8098,"ὢι"],[8099,"ὣι"],[8100,"ὤι"],[8101,"ὥι"],[8102,"ὦι"],[8103,"ὧι"],[8104,"ὠι"],[8105,"ὡι"],[8106,"ὢι"],[8107,"ὣι"],[8108,"ὤι"],[8109,"ὥι"],[8110,"ὦι"],[8111,"ὧι"],[8114,"ὰι"],[8115,"αι"],[8116,"άι"],[8118,"ᾶ"],[8119,"ᾶι"],[8124,"αι"],[8130,"ὴι"],[8131,"ηι"],[8132,"ήι"],[8134,"ῆ"],[8135,"ῆι"],[8140,"ηι"],[8146,"ῒ"],[8147,"ΐ"],[8150,"ῖ"],[8151,"ῗ"],[8162,"ῢ"],[8163,"ΰ"],[8164,"ῤ"],[8166,"ῦ"],[8167,"ῧ"],[8178,"ὼι"],[8179,"ωι"],[8180,"ώι"],[8182,"ῶ"],[8183,"ῶι"],[8188,"ωι"],[64256,"ff"],[64257,"fi"],[64258,"fl"],[64259,"ffi"],[64260,"ffl"],[64261,"st"],[64262,"st"],[64275,"մն"],[64276,"մե"],[64277,"մի"],[64278,"վն"],[64279,"մխ"]]))
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
class PactileRuntimeError(ValueError):
|
|
474
|
+
def __init__(self, code: str):
|
|
475
|
+
super().__init__(code)
|
|
476
|
+
self.code = code
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
# Generated by test/pactile/runtime/unicode_reference.py --tables (Unicode 15).
|
|
481
|
+
# Keep identical to runtime/unicode-nfc-data.ts, independent of host unicodedata.
|
|
482
|
+
_PACTILE_NFC_DATA = {"version":"15.0.0","decomposition":[[192,[65,768]],[193,[65,769]],[194,[65,770]],[195,[65,771]],[196,[65,776]],[197,[65,778]],[199,[67,807]],[200,[69,768]],[201,[69,769]],[202,[69,770]],[203,[69,776]],[204,[73,768]],[205,[73,769]],[206,[73,770]],[207,[73,776]],[209,[78,771]],[210,[79,768]],[211,[79,769]],[212,[79,770]],[213,[79,771]],[214,[79,776]],[217,[85,768]],[218,[85,769]],[219,[85,770]],[220,[85,776]],[221,[89,769]],[224,[97,768]],[225,[97,769]],[226,[97,770]],[227,[97,771]],[228,[97,776]],[229,[97,778]],[231,[99,807]],[232,[101,768]],[233,[101,769]],[234,[101,770]],[235,[101,776]],[236,[105,768]],[237,[105,769]],[238,[105,770]],[239,[105,776]],[241,[110,771]],[242,[111,768]],[243,[111,769]],[244,[111,770]],[245,[111,771]],[246,[111,776]],[249,[117,768]],[250,[117,769]],[251,[117,770]],[252,[117,776]],[253,[121,769]],[255,[121,776]],[256,[65,772]],[257,[97,772]],[258,[65,774]],[259,[97,774]],[260,[65,808]],[261,[97,808]],[262,[67,769]],[263,[99,769]],[264,[67,770]],[265,[99,770]],[266,[67,775]],[267,[99,775]],[268,[67,780]],[269,[99,780]],[270,[68,780]],[271,[100,780]],[274,[69,772]],[275,[101,772]],[276,[69,774]],[277,[101,774]],[278,[69,775]],[279,[101,775]],[280,[69,808]],[281,[101,808]],[282,[69,780]],[283,[101,780]],[284,[71,770]],[285,[103,770]],[286,[71,774]],[287,[103,774]],[288,[71,775]],[289,[103,775]],[290,[71,807]],[291,[103,807]],[292,[72,770]],[293,[104,770]],[296,[73,771]],[297,[105,771]],[298,[73,772]],[299,[105,772]],[300,[73,774]],[301,[105,774]],[302,[73,808]],[303,[105,808]],[304,[73,775]],[308,[74,770]],[309,[106,770]],[310,[75,807]],[311,[107,807]],[313,[76,769]],[314,[108,769]],[315,[76,807]],[316,[108,807]],[317,[76,780]],[318,[108,780]],[323,[78,769]],[324,[110,769]],[325,[78,807]],[326,[110,807]],[327,[78,780]],[328,[110,780]],[332,[79,772]],[333,[111,772]],[334,[79,774]],[335,[111,774]],[336,[79,779]],[337,[111,779]],[340,[82,769]],[341,[114,769]],[342,[82,807]],[343,[114,807]],[344,[82,780]],[345,[114,780]],[346,[83,769]],[347,[115,769]],[348,[83,770]],[349,[115,770]],[350,[83,807]],[351,[115,807]],[352,[83,780]],[353,[115,780]],[354,[84,807]],[355,[116,807]],[356,[84,780]],[357,[116,780]],[360,[85,771]],[361,[117,771]],[362,[85,772]],[363,[117,772]],[364,[85,774]],[365,[117,774]],[366,[85,778]],[367,[117,778]],[368,[85,779]],[369,[117,779]],[370,[85,808]],[371,[117,808]],[372,[87,770]],[373,[119,770]],[374,[89,770]],[375,[121,770]],[376,[89,776]],[377,[90,769]],[378,[122,769]],[379,[90,775]],[380,[122,775]],[381,[90,780]],[382,[122,780]],[416,[79,795]],[417,[111,795]],[431,[85,795]],[432,[117,795]],[461,[65,780]],[462,[97,780]],[463,[73,780]],[464,[105,780]],[465,[79,780]],[466,[111,780]],[467,[85,780]],[468,[117,780]],[469,[220,772]],[470,[252,772]],[471,[220,769]],[472,[252,769]],[473,[220,780]],[474,[252,780]],[475,[220,768]],[476,[252,768]],[478,[196,772]],[479,[228,772]],[480,[550,772]],[481,[551,772]],[482,[198,772]],[483,[230,772]],[486,[71,780]],[487,[103,780]],[488,[75,780]],[489,[107,780]],[490,[79,808]],[491,[111,808]],[492,[490,772]],[493,[491,772]],[494,[439,780]],[495,[658,780]],[496,[106,780]],[500,[71,769]],[501,[103,769]],[504,[78,768]],[505,[110,768]],[506,[197,769]],[507,[229,769]],[508,[198,769]],[509,[230,769]],[510,[216,769]],[511,[248,769]],[512,[65,783]],[513,[97,783]],[514,[65,785]],[515,[97,785]],[516,[69,783]],[517,[101,783]],[518,[69,785]],[519,[101,785]],[520,[73,783]],[521,[105,783]],[522,[73,785]],[523,[105,785]],[524,[79,783]],[525,[111,783]],[526,[79,785]],[527,[111,785]],[528,[82,783]],[529,[114,783]],[530,[82,785]],[531,[114,785]],[532,[85,783]],[533,[117,783]],[534,[85,785]],[535,[117,785]],[536,[83,806]],[537,[115,806]],[538,[84,806]],[539,[116,806]],[542,[72,780]],[543,[104,780]],[550,[65,775]],[551,[97,775]],[552,[69,807]],[553,[101,807]],[554,[214,772]],[555,[246,772]],[556,[213,772]],[557,[245,772]],[558,[79,775]],[559,[111,775]],[560,[558,772]],[561,[559,772]],[562,[89,772]],[563,[121,772]],[832,[768]],[833,[769]],[835,[787]],[836,[776,769]],[884,[697]],[894,[59]],[901,[168,769]],[902,[913,769]],[903,[183]],[904,[917,769]],[905,[919,769]],[906,[921,769]],[908,[927,769]],[910,[933,769]],[911,[937,769]],[912,[970,769]],[938,[921,776]],[939,[933,776]],[940,[945,769]],[941,[949,769]],[942,[951,769]],[943,[953,769]],[944,[971,769]],[970,[953,776]],[971,[965,776]],[972,[959,769]],[973,[965,769]],[974,[969,769]],[979,[978,769]],[980,[978,776]],[1024,[1045,768]],[1025,[1045,776]],[1027,[1043,769]],[1031,[1030,776]],[1036,[1050,769]],[1037,[1048,768]],[1038,[1059,774]],[1049,[1048,774]],[1081,[1080,774]],[1104,[1077,768]],[1105,[1077,776]],[1107,[1075,769]],[1111,[1110,776]],[1116,[1082,769]],[1117,[1080,768]],[1118,[1091,774]],[1142,[1140,783]],[1143,[1141,783]],[1217,[1046,774]],[1218,[1078,774]],[1232,[1040,774]],[1233,[1072,774]],[1234,[1040,776]],[1235,[1072,776]],[1238,[1045,774]],[1239,[1077,774]],[1242,[1240,776]],[1243,[1241,776]],[1244,[1046,776]],[1245,[1078,776]],[1246,[1047,776]],[1247,[1079,776]],[1250,[1048,772]],[1251,[1080,772]],[1252,[1048,776]],[1253,[1080,776]],[1254,[1054,776]],[1255,[1086,776]],[1258,[1256,776]],[1259,[1257,776]],[1260,[1069,776]],[1261,[1101,776]],[1262,[1059,772]],[1263,[1091,772]],[1264,[1059,776]],[1265,[1091,776]],[1266,[1059,779]],[1267,[1091,779]],[1268,[1063,776]],[1269,[1095,776]],[1272,[1067,776]],[1273,[1099,776]],[1570,[1575,1619]],[1571,[1575,1620]],[1572,[1608,1620]],[1573,[1575,1621]],[1574,[1610,1620]],[1728,[1749,1620]],[1730,[1729,1620]],[1747,[1746,1620]],[2345,[2344,2364]],[2353,[2352,2364]],[2356,[2355,2364]],[2392,[2325,2364]],[2393,[2326,2364]],[2394,[2327,2364]],[2395,[2332,2364]],[2396,[2337,2364]],[2397,[2338,2364]],[2398,[2347,2364]],[2399,[2351,2364]],[2507,[2503,2494]],[2508,[2503,2519]],[2524,[2465,2492]],[2525,[2466,2492]],[2527,[2479,2492]],[2611,[2610,2620]],[2614,[2616,2620]],[2649,[2582,2620]],[2650,[2583,2620]],[2651,[2588,2620]],[2654,[2603,2620]],[2888,[2887,2902]],[2891,[2887,2878]],[2892,[2887,2903]],[2908,[2849,2876]],[2909,[2850,2876]],[2964,[2962,3031]],[3018,[3014,3006]],[3019,[3015,3006]],[3020,[3014,3031]],[3144,[3142,3158]],[3264,[3263,3285]],[3271,[3270,3285]],[3272,[3270,3286]],[3274,[3270,3266]],[3275,[3274,3285]],[3402,[3398,3390]],[3403,[3399,3390]],[3404,[3398,3415]],[3546,[3545,3530]],[3548,[3545,3535]],[3549,[3548,3530]],[3550,[3545,3551]],[3907,[3906,4023]],[3917,[3916,4023]],[3922,[3921,4023]],[3927,[3926,4023]],[3932,[3931,4023]],[3945,[3904,4021]],[3955,[3953,3954]],[3957,[3953,3956]],[3958,[4018,3968]],[3960,[4019,3968]],[3969,[3953,3968]],[3987,[3986,4023]],[3997,[3996,4023]],[4002,[4001,4023]],[4007,[4006,4023]],[4012,[4011,4023]],[4025,[3984,4021]],[4134,[4133,4142]],[6918,[6917,6965]],[6920,[6919,6965]],[6922,[6921,6965]],[6924,[6923,6965]],[6926,[6925,6965]],[6930,[6929,6965]],[6971,[6970,6965]],[6973,[6972,6965]],[6976,[6974,6965]],[6977,[6975,6965]],[6979,[6978,6965]],[7680,[65,805]],[7681,[97,805]],[7682,[66,775]],[7683,[98,775]],[7684,[66,803]],[7685,[98,803]],[7686,[66,817]],[7687,[98,817]],[7688,[199,769]],[7689,[231,769]],[7690,[68,775]],[7691,[100,775]],[7692,[68,803]],[7693,[100,803]],[7694,[68,817]],[7695,[100,817]],[7696,[68,807]],[7697,[100,807]],[7698,[68,813]],[7699,[100,813]],[7700,[274,768]],[7701,[275,768]],[7702,[274,769]],[7703,[275,769]],[7704,[69,813]],[7705,[101,813]],[7706,[69,816]],[7707,[101,816]],[7708,[552,774]],[7709,[553,774]],[7710,[70,775]],[7711,[102,775]],[7712,[71,772]],[7713,[103,772]],[7714,[72,775]],[7715,[104,775]],[7716,[72,803]],[7717,[104,803]],[7718,[72,776]],[7719,[104,776]],[7720,[72,807]],[7721,[104,807]],[7722,[72,814]],[7723,[104,814]],[7724,[73,816]],[7725,[105,816]],[7726,[207,769]],[7727,[239,769]],[7728,[75,769]],[7729,[107,769]],[7730,[75,803]],[7731,[107,803]],[7732,[75,817]],[7733,[107,817]],[7734,[76,803]],[7735,[108,803]],[7736,[7734,772]],[7737,[7735,772]],[7738,[76,817]],[7739,[108,817]],[7740,[76,813]],[7741,[108,813]],[7742,[77,769]],[7743,[109,769]],[7744,[77,775]],[7745,[109,775]],[7746,[77,803]],[7747,[109,803]],[7748,[78,775]],[7749,[110,775]],[7750,[78,803]],[7751,[110,803]],[7752,[78,817]],[7753,[110,817]],[7754,[78,813]],[7755,[110,813]],[7756,[213,769]],[7757,[245,769]],[7758,[213,776]],[7759,[245,776]],[7760,[332,768]],[7761,[333,768]],[7762,[332,769]],[7763,[333,769]],[7764,[80,769]],[7765,[112,769]],[7766,[80,775]],[7767,[112,775]],[7768,[82,775]],[7769,[114,775]],[7770,[82,803]],[7771,[114,803]],[7772,[7770,772]],[7773,[7771,772]],[7774,[82,817]],[7775,[114,817]],[7776,[83,775]],[7777,[115,775]],[7778,[83,803]],[7779,[115,803]],[7780,[346,775]],[7781,[347,775]],[7782,[352,775]],[7783,[353,775]],[7784,[7778,775]],[7785,[7779,775]],[7786,[84,775]],[7787,[116,775]],[7788,[84,803]],[7789,[116,803]],[7790,[84,817]],[7791,[116,817]],[7792,[84,813]],[7793,[116,813]],[7794,[85,804]],[7795,[117,804]],[7796,[85,816]],[7797,[117,816]],[7798,[85,813]],[7799,[117,813]],[7800,[360,769]],[7801,[361,769]],[7802,[362,776]],[7803,[363,776]],[7804,[86,771]],[7805,[118,771]],[7806,[86,803]],[7807,[118,803]],[7808,[87,768]],[7809,[119,768]],[7810,[87,769]],[7811,[119,769]],[7812,[87,776]],[7813,[119,776]],[7814,[87,775]],[7815,[119,775]],[7816,[87,803]],[7817,[119,803]],[7818,[88,775]],[7819,[120,775]],[7820,[88,776]],[7821,[120,776]],[7822,[89,775]],[7823,[121,775]],[7824,[90,770]],[7825,[122,770]],[7826,[90,803]],[7827,[122,803]],[7828,[90,817]],[7829,[122,817]],[7830,[104,817]],[7831,[116,776]],[7832,[119,778]],[7833,[121,778]],[7835,[383,775]],[7840,[65,803]],[7841,[97,803]],[7842,[65,777]],[7843,[97,777]],[7844,[194,769]],[7845,[226,769]],[7846,[194,768]],[7847,[226,768]],[7848,[194,777]],[7849,[226,777]],[7850,[194,771]],[7851,[226,771]],[7852,[7840,770]],[7853,[7841,770]],[7854,[258,769]],[7855,[259,769]],[7856,[258,768]],[7857,[259,768]],[7858,[258,777]],[7859,[259,777]],[7860,[258,771]],[7861,[259,771]],[7862,[7840,774]],[7863,[7841,774]],[7864,[69,803]],[7865,[101,803]],[7866,[69,777]],[7867,[101,777]],[7868,[69,771]],[7869,[101,771]],[7870,[202,769]],[7871,[234,769]],[7872,[202,768]],[7873,[234,768]],[7874,[202,777]],[7875,[234,777]],[7876,[202,771]],[7877,[234,771]],[7878,[7864,770]],[7879,[7865,770]],[7880,[73,777]],[7881,[105,777]],[7882,[73,803]],[7883,[105,803]],[7884,[79,803]],[7885,[111,803]],[7886,[79,777]],[7887,[111,777]],[7888,[212,769]],[7889,[244,769]],[7890,[212,768]],[7891,[244,768]],[7892,[212,777]],[7893,[244,777]],[7894,[212,771]],[7895,[244,771]],[7896,[7884,770]],[7897,[7885,770]],[7898,[416,769]],[7899,[417,769]],[7900,[416,768]],[7901,[417,768]],[7902,[416,777]],[7903,[417,777]],[7904,[416,771]],[7905,[417,771]],[7906,[416,803]],[7907,[417,803]],[7908,[85,803]],[7909,[117,803]],[7910,[85,777]],[7911,[117,777]],[7912,[431,769]],[7913,[432,769]],[7914,[431,768]],[7915,[432,768]],[7916,[431,777]],[7917,[432,777]],[7918,[431,771]],[7919,[432,771]],[7920,[431,803]],[7921,[432,803]],[7922,[89,768]],[7923,[121,768]],[7924,[89,803]],[7925,[121,803]],[7926,[89,777]],[7927,[121,777]],[7928,[89,771]],[7929,[121,771]],[7936,[945,787]],[7937,[945,788]],[7938,[7936,768]],[7939,[7937,768]],[7940,[7936,769]],[7941,[7937,769]],[7942,[7936,834]],[7943,[7937,834]],[7944,[913,787]],[7945,[913,788]],[7946,[7944,768]],[7947,[7945,768]],[7948,[7944,769]],[7949,[7945,769]],[7950,[7944,834]],[7951,[7945,834]],[7952,[949,787]],[7953,[949,788]],[7954,[7952,768]],[7955,[7953,768]],[7956,[7952,769]],[7957,[7953,769]],[7960,[917,787]],[7961,[917,788]],[7962,[7960,768]],[7963,[7961,768]],[7964,[7960,769]],[7965,[7961,769]],[7968,[951,787]],[7969,[951,788]],[7970,[7968,768]],[7971,[7969,768]],[7972,[7968,769]],[7973,[7969,769]],[7974,[7968,834]],[7975,[7969,834]],[7976,[919,787]],[7977,[919,788]],[7978,[7976,768]],[7979,[7977,768]],[7980,[7976,769]],[7981,[7977,769]],[7982,[7976,834]],[7983,[7977,834]],[7984,[953,787]],[7985,[953,788]],[7986,[7984,768]],[7987,[7985,768]],[7988,[7984,769]],[7989,[7985,769]],[7990,[7984,834]],[7991,[7985,834]],[7992,[921,787]],[7993,[921,788]],[7994,[7992,768]],[7995,[7993,768]],[7996,[7992,769]],[7997,[7993,769]],[7998,[7992,834]],[7999,[7993,834]],[8000,[959,787]],[8001,[959,788]],[8002,[8000,768]],[8003,[8001,768]],[8004,[8000,769]],[8005,[8001,769]],[8008,[927,787]],[8009,[927,788]],[8010,[8008,768]],[8011,[8009,768]],[8012,[8008,769]],[8013,[8009,769]],[8016,[965,787]],[8017,[965,788]],[8018,[8016,768]],[8019,[8017,768]],[8020,[8016,769]],[8021,[8017,769]],[8022,[8016,834]],[8023,[8017,834]],[8025,[933,788]],[8027,[8025,768]],[8029,[8025,769]],[8031,[8025,834]],[8032,[969,787]],[8033,[969,788]],[8034,[8032,768]],[8035,[8033,768]],[8036,[8032,769]],[8037,[8033,769]],[8038,[8032,834]],[8039,[8033,834]],[8040,[937,787]],[8041,[937,788]],[8042,[8040,768]],[8043,[8041,768]],[8044,[8040,769]],[8045,[8041,769]],[8046,[8040,834]],[8047,[8041,834]],[8048,[945,768]],[8049,[940]],[8050,[949,768]],[8051,[941]],[8052,[951,768]],[8053,[942]],[8054,[953,768]],[8055,[943]],[8056,[959,768]],[8057,[972]],[8058,[965,768]],[8059,[973]],[8060,[969,768]],[8061,[974]],[8064,[7936,837]],[8065,[7937,837]],[8066,[7938,837]],[8067,[7939,837]],[8068,[7940,837]],[8069,[7941,837]],[8070,[7942,837]],[8071,[7943,837]],[8072,[7944,837]],[8073,[7945,837]],[8074,[7946,837]],[8075,[7947,837]],[8076,[7948,837]],[8077,[7949,837]],[8078,[7950,837]],[8079,[7951,837]],[8080,[7968,837]],[8081,[7969,837]],[8082,[7970,837]],[8083,[7971,837]],[8084,[7972,837]],[8085,[7973,837]],[8086,[7974,837]],[8087,[7975,837]],[8088,[7976,837]],[8089,[7977,837]],[8090,[7978,837]],[8091,[7979,837]],[8092,[7980,837]],[8093,[7981,837]],[8094,[7982,837]],[8095,[7983,837]],[8096,[8032,837]],[8097,[8033,837]],[8098,[8034,837]],[8099,[8035,837]],[8100,[8036,837]],[8101,[8037,837]],[8102,[8038,837]],[8103,[8039,837]],[8104,[8040,837]],[8105,[8041,837]],[8106,[8042,837]],[8107,[8043,837]],[8108,[8044,837]],[8109,[8045,837]],[8110,[8046,837]],[8111,[8047,837]],[8112,[945,774]],[8113,[945,772]],[8114,[8048,837]],[8115,[945,837]],[8116,[940,837]],[8118,[945,834]],[8119,[8118,837]],[8120,[913,774]],[8121,[913,772]],[8122,[913,768]],[8123,[902]],[8124,[913,837]],[8126,[953]],[8129,[168,834]],[8130,[8052,837]],[8131,[951,837]],[8132,[942,837]],[8134,[951,834]],[8135,[8134,837]],[8136,[917,768]],[8137,[904]],[8138,[919,768]],[8139,[905]],[8140,[919,837]],[8141,[8127,768]],[8142,[8127,769]],[8143,[8127,834]],[8144,[953,774]],[8145,[953,772]],[8146,[970,768]],[8147,[912]],[8150,[953,834]],[8151,[970,834]],[8152,[921,774]],[8153,[921,772]],[8154,[921,768]],[8155,[906]],[8157,[8190,768]],[8158,[8190,769]],[8159,[8190,834]],[8160,[965,774]],[8161,[965,772]],[8162,[971,768]],[8163,[944]],[8164,[961,787]],[8165,[961,788]],[8166,[965,834]],[8167,[971,834]],[8168,[933,774]],[8169,[933,772]],[8170,[933,768]],[8171,[910]],[8172,[929,788]],[8173,[168,768]],[8174,[901]],[8175,[96]],[8178,[8060,837]],[8179,[969,837]],[8180,[974,837]],[8182,[969,834]],[8183,[8182,837]],[8184,[927,768]],[8185,[908]],[8186,[937,768]],[8187,[911]],[8188,[937,837]],[8189,[180]],[8192,[8194]],[8193,[8195]],[8486,[937]],[8490,[75]],[8491,[197]],[8602,[8592,824]],[8603,[8594,824]],[8622,[8596,824]],[8653,[8656,824]],[8654,[8660,824]],[8655,[8658,824]],[8708,[8707,824]],[8713,[8712,824]],[8716,[8715,824]],[8740,[8739,824]],[8742,[8741,824]],[8769,[8764,824]],[8772,[8771,824]],[8775,[8773,824]],[8777,[8776,824]],[8800,[61,824]],[8802,[8801,824]],[8813,[8781,824]],[8814,[60,824]],[8815,[62,824]],[8816,[8804,824]],[8817,[8805,824]],[8820,[8818,824]],[8821,[8819,824]],[8824,[8822,824]],[8825,[8823,824]],[8832,[8826,824]],[8833,[8827,824]],[8836,[8834,824]],[8837,[8835,824]],[8840,[8838,824]],[8841,[8839,824]],[8876,[8866,824]],[8877,[8872,824]],[8878,[8873,824]],[8879,[8875,824]],[8928,[8828,824]],[8929,[8829,824]],[8930,[8849,824]],[8931,[8850,824]],[8938,[8882,824]],[8939,[8883,824]],[8940,[8884,824]],[8941,[8885,824]],[9001,[12296]],[9002,[12297]],[10972,[10973,824]],[12364,[12363,12441]],[12366,[12365,12441]],[12368,[12367,12441]],[12370,[12369,12441]],[12372,[12371,12441]],[12374,[12373,12441]],[12376,[12375,12441]],[12378,[12377,12441]],[12380,[12379,12441]],[12382,[12381,12441]],[12384,[12383,12441]],[12386,[12385,12441]],[12389,[12388,12441]],[12391,[12390,12441]],[12393,[12392,12441]],[12400,[12399,12441]],[12401,[12399,12442]],[12403,[12402,12441]],[12404,[12402,12442]],[12406,[12405,12441]],[12407,[12405,12442]],[12409,[12408,12441]],[12410,[12408,12442]],[12412,[12411,12441]],[12413,[12411,12442]],[12436,[12358,12441]],[12446,[12445,12441]],[12460,[12459,12441]],[12462,[12461,12441]],[12464,[12463,12441]],[12466,[12465,12441]],[12468,[12467,12441]],[12470,[12469,12441]],[12472,[12471,12441]],[12474,[12473,12441]],[12476,[12475,12441]],[12478,[12477,12441]],[12480,[12479,12441]],[12482,[12481,12441]],[12485,[12484,12441]],[12487,[12486,12441]],[12489,[12488,12441]],[12496,[12495,12441]],[12497,[12495,12442]],[12499,[12498,12441]],[12500,[12498,12442]],[12502,[12501,12441]],[12503,[12501,12442]],[12505,[12504,12441]],[12506,[12504,12442]],[12508,[12507,12441]],[12509,[12507,12442]],[12532,[12454,12441]],[12535,[12527,12441]],[12536,[12528,12441]],[12537,[12529,12441]],[12538,[12530,12441]],[12542,[12541,12441]],[63744,[35912]],[63745,[26356]],[63746,[36554]],[63747,[36040]],[63748,[28369]],[63749,[20018]],[63750,[21477]],[63751,[40860]],[63752,[40860]],[63753,[22865]],[63754,[37329]],[63755,[21895]],[63756,[22856]],[63757,[25078]],[63758,[30313]],[63759,[32645]],[63760,[34367]],[63761,[34746]],[63762,[35064]],[63763,[37007]],[63764,[27138]],[63765,[27931]],[63766,[28889]],[63767,[29662]],[63768,[33853]],[63769,[37226]],[63770,[39409]],[63771,[20098]],[63772,[21365]],[63773,[27396]],[63774,[29211]],[63775,[34349]],[63776,[40478]],[63777,[23888]],[63778,[28651]],[63779,[34253]],[63780,[35172]],[63781,[25289]],[63782,[33240]],[63783,[34847]],[63784,[24266]],[63785,[26391]],[63786,[28010]],[63787,[29436]],[63788,[37070]],[63789,[20358]],[63790,[20919]],[63791,[21214]],[63792,[25796]],[63793,[27347]],[63794,[29200]],[63795,[30439]],[63796,[32769]],[63797,[34310]],[63798,[34396]],[63799,[36335]],[63800,[38706]],[63801,[39791]],[63802,[40442]],[63803,[30860]],[63804,[31103]],[63805,[32160]],[63806,[33737]],[63807,[37636]],[63808,[40575]],[63809,[35542]],[63810,[22751]],[63811,[24324]],[63812,[31840]],[63813,[32894]],[63814,[29282]],[63815,[30922]],[63816,[36034]],[63817,[38647]],[63818,[22744]],[63819,[23650]],[63820,[27155]],[63821,[28122]],[63822,[28431]],[63823,[32047]],[63824,[32311]],[63825,[38475]],[63826,[21202]],[63827,[32907]],[63828,[20956]],[63829,[20940]],[63830,[31260]],[63831,[32190]],[63832,[33777]],[63833,[38517]],[63834,[35712]],[63835,[25295]],[63836,[27138]],[63837,[35582]],[63838,[20025]],[63839,[23527]],[63840,[24594]],[63841,[29575]],[63842,[30064]],[63843,[21271]],[63844,[30971]],[63845,[20415]],[63846,[24489]],[63847,[19981]],[63848,[27852]],[63849,[25976]],[63850,[32034]],[63851,[21443]],[63852,[22622]],[63853,[30465]],[63854,[33865]],[63855,[35498]],[63856,[27578]],[63857,[36784]],[63858,[27784]],[63859,[25342]],[63860,[33509]],[63861,[25504]],[63862,[30053]],[63863,[20142]],[63864,[20841]],[63865,[20937]],[63866,[26753]],[63867,[31975]],[63868,[33391]],[63869,[35538]],[63870,[37327]],[63871,[21237]],[63872,[21570]],[63873,[22899]],[63874,[24300]],[63875,[26053]],[63876,[28670]],[63877,[31018]],[63878,[38317]],[63879,[39530]],[63880,[40599]],[63881,[40654]],[63882,[21147]],[63883,[26310]],[63884,[27511]],[63885,[36706]],[63886,[24180]],[63887,[24976]],[63888,[25088]],[63889,[25754]],[63890,[28451]],[63891,[29001]],[63892,[29833]],[63893,[31178]],[63894,[32244]],[63895,[32879]],[63896,[36646]],[63897,[34030]],[63898,[36899]],[63899,[37706]],[63900,[21015]],[63901,[21155]],[63902,[21693]],[63903,[28872]],[63904,[35010]],[63905,[35498]],[63906,[24265]],[63907,[24565]],[63908,[25467]],[63909,[27566]],[63910,[31806]],[63911,[29557]],[63912,[20196]],[63913,[22265]],[63914,[23527]],[63915,[23994]],[63916,[24604]],[63917,[29618]],[63918,[29801]],[63919,[32666]],[63920,[32838]],[63921,[37428]],[63922,[38646]],[63923,[38728]],[63924,[38936]],[63925,[20363]],[63926,[31150]],[63927,[37300]],[63928,[38584]],[63929,[24801]],[63930,[20102]],[63931,[20698]],[63932,[23534]],[63933,[23615]],[63934,[26009]],[63935,[27138]],[63936,[29134]],[63937,[30274]],[63938,[34044]],[63939,[36988]],[63940,[40845]],[63941,[26248]],[63942,[38446]],[63943,[21129]],[63944,[26491]],[63945,[26611]],[63946,[27969]],[63947,[28316]],[63948,[29705]],[63949,[30041]],[63950,[30827]],[63951,[32016]],[63952,[39006]],[63953,[20845]],[63954,[25134]],[63955,[38520]],[63956,[20523]],[63957,[23833]],[63958,[28138]],[63959,[36650]],[63960,[24459]],[63961,[24900]],[63962,[26647]],[63963,[29575]],[63964,[38534]],[63965,[21033]],[63966,[21519]],[63967,[23653]],[63968,[26131]],[63969,[26446]],[63970,[26792]],[63971,[27877]],[63972,[29702]],[63973,[30178]],[63974,[32633]],[63975,[35023]],[63976,[35041]],[63977,[37324]],[63978,[38626]],[63979,[21311]],[63980,[28346]],[63981,[21533]],[63982,[29136]],[63983,[29848]],[63984,[34298]],[63985,[38563]],[63986,[40023]],[63987,[40607]],[63988,[26519]],[63989,[28107]],[63990,[33256]],[63991,[31435]],[63992,[31520]],[63993,[31890]],[63994,[29376]],[63995,[28825]],[63996,[35672]],[63997,[20160]],[63998,[33590]],[63999,[21050]],[64000,[20999]],[64001,[24230]],[64002,[25299]],[64003,[31958]],[64004,[23429]],[64005,[27934]],[64006,[26292]],[64007,[36667]],[64008,[34892]],[64009,[38477]],[64010,[35211]],[64011,[24275]],[64012,[20800]],[64013,[21952]],[64016,[22618]],[64018,[26228]],[64021,[20958]],[64022,[29482]],[64023,[30410]],[64024,[31036]],[64025,[31070]],[64026,[31077]],[64027,[31119]],[64028,[38742]],[64029,[31934]],[64030,[32701]],[64032,[34322]],[64034,[35576]],[64037,[36920]],[64038,[37117]],[64042,[39151]],[64043,[39164]],[64044,[39208]],[64045,[40372]],[64046,[37086]],[64047,[38583]],[64048,[20398]],[64049,[20711]],[64050,[20813]],[64051,[21193]],[64052,[21220]],[64053,[21329]],[64054,[21917]],[64055,[22022]],[64056,[22120]],[64057,[22592]],[64058,[22696]],[64059,[23652]],[64060,[23662]],[64061,[24724]],[64062,[24936]],[64063,[24974]],[64064,[25074]],[64065,[25935]],[64066,[26082]],[64067,[26257]],[64068,[26757]],[64069,[28023]],[64070,[28186]],[64071,[28450]],[64072,[29038]],[64073,[29227]],[64074,[29730]],[64075,[30865]],[64076,[31038]],[64077,[31049]],[64078,[31048]],[64079,[31056]],[64080,[31062]],[64081,[31069]],[64082,[31117]],[64083,[31118]],[64084,[31296]],[64085,[31361]],[64086,[31680]],[64087,[32244]],[64088,[32265]],[64089,[32321]],[64090,[32626]],[64091,[32773]],[64092,[33261]],[64093,[33401]],[64094,[33401]],[64095,[33879]],[64096,[35088]],[64097,[35222]],[64098,[35585]],[64099,[35641]],[64100,[36051]],[64101,[36104]],[64102,[36790]],[64103,[36920]],[64104,[38627]],[64105,[38911]],[64106,[38971]],[64107,[24693]],[64108,[148206]],[64109,[33304]],[64112,[20006]],[64113,[20917]],[64114,[20840]],[64115,[20352]],[64116,[20805]],[64117,[20864]],[64118,[21191]],[64119,[21242]],[64120,[21917]],[64121,[21845]],[64122,[21913]],[64123,[21986]],[64124,[22618]],[64125,[22707]],[64126,[22852]],[64127,[22868]],[64128,[23138]],[64129,[23336]],[64130,[24274]],[64131,[24281]],[64132,[24425]],[64133,[24493]],[64134,[24792]],[64135,[24910]],[64136,[24840]],[64137,[24974]],[64138,[24928]],[64139,[25074]],[64140,[25140]],[64141,[25540]],[64142,[25628]],[64143,[25682]],[64144,[25942]],[64145,[26228]],[64146,[26391]],[64147,[26395]],[64148,[26454]],[64149,[27513]],[64150,[27578]],[64151,[27969]],[64152,[28379]],[64153,[28363]],[64154,[28450]],[64155,[28702]],[64156,[29038]],[64157,[30631]],[64158,[29237]],[64159,[29359]],[64160,[29482]],[64161,[29809]],[64162,[29958]],[64163,[30011]],[64164,[30237]],[64165,[30239]],[64166,[30410]],[64167,[30427]],[64168,[30452]],[64169,[30538]],[64170,[30528]],[64171,[30924]],[64172,[31409]],[64173,[31680]],[64174,[31867]],[64175,[32091]],[64176,[32244]],[64177,[32574]],[64178,[32773]],[64179,[33618]],[64180,[33775]],[64181,[34681]],[64182,[35137]],[64183,[35206]],[64184,[35222]],[64185,[35519]],[64186,[35576]],[64187,[35531]],[64188,[35585]],[64189,[35582]],[64190,[35565]],[64191,[35641]],[64192,[35722]],[64193,[36104]],[64194,[36664]],[64195,[36978]],[64196,[37273]],[64197,[37494]],[64198,[38524]],[64199,[38627]],[64200,[38742]],[64201,[38875]],[64202,[38911]],[64203,[38923]],[64204,[38971]],[64205,[39698]],[64206,[40860]],[64207,[141386]],[64208,[141380]],[64209,[144341]],[64210,[15261]],[64211,[16408]],[64212,[16441]],[64213,[152137]],[64214,[154832]],[64215,[163539]],[64216,[40771]],[64217,[40846]],[64285,[1497,1460]],[64287,[1522,1463]],[64298,[1513,1473]],[64299,[1513,1474]],[64300,[64329,1473]],[64301,[64329,1474]],[64302,[1488,1463]],[64303,[1488,1464]],[64304,[1488,1468]],[64305,[1489,1468]],[64306,[1490,1468]],[64307,[1491,1468]],[64308,[1492,1468]],[64309,[1493,1468]],[64310,[1494,1468]],[64312,[1496,1468]],[64313,[1497,1468]],[64314,[1498,1468]],[64315,[1499,1468]],[64316,[1500,1468]],[64318,[1502,1468]],[64320,[1504,1468]],[64321,[1505,1468]],[64323,[1507,1468]],[64324,[1508,1468]],[64326,[1510,1468]],[64327,[1511,1468]],[64328,[1512,1468]],[64329,[1513,1468]],[64330,[1514,1468]],[64331,[1493,1465]],[64332,[1489,1471]],[64333,[1499,1471]],[64334,[1508,1471]],[69786,[69785,69818]],[69788,[69787,69818]],[69803,[69797,69818]],[69934,[69937,69927]],[69935,[69938,69927]],[70475,[70471,70462]],[70476,[70471,70487]],[70843,[70841,70842]],[70844,[70841,70832]],[70846,[70841,70845]],[71098,[71096,71087]],[71099,[71097,71087]],[71992,[71989,71984]],[119134,[119127,119141]],[119135,[119128,119141]],[119136,[119135,119150]],[119137,[119135,119151]],[119138,[119135,119152]],[119139,[119135,119153]],[119140,[119135,119154]],[119227,[119225,119141]],[119228,[119226,119141]],[119229,[119227,119150]],[119230,[119228,119150]],[119231,[119227,119151]],[119232,[119228,119151]],[194560,[20029]],[194561,[20024]],[194562,[20033]],[194563,[131362]],[194564,[20320]],[194565,[20398]],[194566,[20411]],[194567,[20482]],[194568,[20602]],[194569,[20633]],[194570,[20711]],[194571,[20687]],[194572,[13470]],[194573,[132666]],[194574,[20813]],[194575,[20820]],[194576,[20836]],[194577,[20855]],[194578,[132380]],[194579,[13497]],[194580,[20839]],[194581,[20877]],[194582,[132427]],[194583,[20887]],[194584,[20900]],[194585,[20172]],[194586,[20908]],[194587,[20917]],[194588,[168415]],[194589,[20981]],[194590,[20995]],[194591,[13535]],[194592,[21051]],[194593,[21062]],[194594,[21106]],[194595,[21111]],[194596,[13589]],[194597,[21191]],[194598,[21193]],[194599,[21220]],[194600,[21242]],[194601,[21253]],[194602,[21254]],[194603,[21271]],[194604,[21321]],[194605,[21329]],[194606,[21338]],[194607,[21363]],[194608,[21373]],[194609,[21375]],[194610,[21375]],[194611,[21375]],[194612,[133676]],[194613,[28784]],[194614,[21450]],[194615,[21471]],[194616,[133987]],[194617,[21483]],[194618,[21489]],[194619,[21510]],[194620,[21662]],[194621,[21560]],[194622,[21576]],[194623,[21608]],[194624,[21666]],[194625,[21750]],[194626,[21776]],[194627,[21843]],[194628,[21859]],[194629,[21892]],[194630,[21892]],[194631,[21913]],[194632,[21931]],[194633,[21939]],[194634,[21954]],[194635,[22294]],[194636,[22022]],[194637,[22295]],[194638,[22097]],[194639,[22132]],[194640,[20999]],[194641,[22766]],[194642,[22478]],[194643,[22516]],[194644,[22541]],[194645,[22411]],[194646,[22578]],[194647,[22577]],[194648,[22700]],[194649,[136420]],[194650,[22770]],[194651,[22775]],[194652,[22790]],[194653,[22810]],[194654,[22818]],[194655,[22882]],[194656,[136872]],[194657,[136938]],[194658,[23020]],[194659,[23067]],[194660,[23079]],[194661,[23000]],[194662,[23142]],[194663,[14062]],[194664,[14076]],[194665,[23304]],[194666,[23358]],[194667,[23358]],[194668,[137672]],[194669,[23491]],[194670,[23512]],[194671,[23527]],[194672,[23539]],[194673,[138008]],[194674,[23551]],[194675,[23558]],[194676,[24403]],[194677,[23586]],[194678,[14209]],[194679,[23648]],[194680,[23662]],[194681,[23744]],[194682,[23693]],[194683,[138724]],[194684,[23875]],[194685,[138726]],[194686,[23918]],[194687,[23915]],[194688,[23932]],[194689,[24033]],[194690,[24034]],[194691,[14383]],[194692,[24061]],[194693,[24104]],[194694,[24125]],[194695,[24169]],[194696,[14434]],[194697,[139651]],[194698,[14460]],[194699,[24240]],[194700,[24243]],[194701,[24246]],[194702,[24266]],[194703,[172946]],[194704,[24318]],[194705,[140081]],[194706,[140081]],[194707,[33281]],[194708,[24354]],[194709,[24354]],[194710,[14535]],[194711,[144056]],[194712,[156122]],[194713,[24418]],[194714,[24427]],[194715,[14563]],[194716,[24474]],[194717,[24525]],[194718,[24535]],[194719,[24569]],[194720,[24705]],[194721,[14650]],[194722,[14620]],[194723,[24724]],[194724,[141012]],[194725,[24775]],[194726,[24904]],[194727,[24908]],[194728,[24910]],[194729,[24908]],[194730,[24954]],[194731,[24974]],[194732,[25010]],[194733,[24996]],[194734,[25007]],[194735,[25054]],[194736,[25074]],[194737,[25078]],[194738,[25104]],[194739,[25115]],[194740,[25181]],[194741,[25265]],[194742,[25300]],[194743,[25424]],[194744,[142092]],[194745,[25405]],[194746,[25340]],[194747,[25448]],[194748,[25475]],[194749,[25572]],[194750,[142321]],[194751,[25634]],[194752,[25541]],[194753,[25513]],[194754,[14894]],[194755,[25705]],[194756,[25726]],[194757,[25757]],[194758,[25719]],[194759,[14956]],[194760,[25935]],[194761,[25964]],[194762,[143370]],[194763,[26083]],[194764,[26360]],[194765,[26185]],[194766,[15129]],[194767,[26257]],[194768,[15112]],[194769,[15076]],[194770,[20882]],[194771,[20885]],[194772,[26368]],[194773,[26268]],[194774,[32941]],[194775,[17369]],[194776,[26391]],[194777,[26395]],[194778,[26401]],[194779,[26462]],[194780,[26451]],[194781,[144323]],[194782,[15177]],[194783,[26618]],[194784,[26501]],[194785,[26706]],[194786,[26757]],[194787,[144493]],[194788,[26766]],[194789,[26655]],[194790,[26900]],[194791,[15261]],[194792,[26946]],[194793,[27043]],[194794,[27114]],[194795,[27304]],[194796,[145059]],[194797,[27355]],[194798,[15384]],[194799,[27425]],[194800,[145575]],[194801,[27476]],[194802,[15438]],[194803,[27506]],[194804,[27551]],[194805,[27578]],[194806,[27579]],[194807,[146061]],[194808,[138507]],[194809,[146170]],[194810,[27726]],[194811,[146620]],[194812,[27839]],[194813,[27853]],[194814,[27751]],[194815,[27926]],[194816,[27966]],[194817,[28023]],[194818,[27969]],[194819,[28009]],[194820,[28024]],[194821,[28037]],[194822,[146718]],[194823,[27956]],[194824,[28207]],[194825,[28270]],[194826,[15667]],[194827,[28363]],[194828,[28359]],[194829,[147153]],[194830,[28153]],[194831,[28526]],[194832,[147294]],[194833,[147342]],[194834,[28614]],[194835,[28729]],[194836,[28702]],[194837,[28699]],[194838,[15766]],[194839,[28746]],[194840,[28797]],[194841,[28791]],[194842,[28845]],[194843,[132389]],[194844,[28997]],[194845,[148067]],[194846,[29084]],[194847,[148395]],[194848,[29224]],[194849,[29237]],[194850,[29264]],[194851,[149000]],[194852,[29312]],[194853,[29333]],[194854,[149301]],[194855,[149524]],[194856,[29562]],[194857,[29579]],[194858,[16044]],[194859,[29605]],[194860,[16056]],[194861,[16056]],[194862,[29767]],[194863,[29788]],[194864,[29809]],[194865,[29829]],[194866,[29898]],[194867,[16155]],[194868,[29988]],[194869,[150582]],[194870,[30014]],[194871,[150674]],[194872,[30064]],[194873,[139679]],[194874,[30224]],[194875,[151457]],[194876,[151480]],[194877,[151620]],[194878,[16380]],[194879,[16392]],[194880,[30452]],[194881,[151795]],[194882,[151794]],[194883,[151833]],[194884,[151859]],[194885,[30494]],[194886,[30495]],[194887,[30495]],[194888,[30538]],[194889,[16441]],[194890,[30603]],[194891,[16454]],[194892,[16534]],[194893,[152605]],[194894,[30798]],[194895,[30860]],[194896,[30924]],[194897,[16611]],[194898,[153126]],[194899,[31062]],[194900,[153242]],[194901,[153285]],[194902,[31119]],[194903,[31211]],[194904,[16687]],[194905,[31296]],[194906,[31306]],[194907,[31311]],[194908,[153980]],[194909,[154279]],[194910,[154279]],[194911,[31470]],[194912,[16898]],[194913,[154539]],[194914,[31686]],[194915,[31689]],[194916,[16935]],[194917,[154752]],[194918,[31954]],[194919,[17056]],[194920,[31976]],[194921,[31971]],[194922,[32000]],[194923,[155526]],[194924,[32099]],[194925,[17153]],[194926,[32199]],[194927,[32258]],[194928,[32325]],[194929,[17204]],[194930,[156200]],[194931,[156231]],[194932,[17241]],[194933,[156377]],[194934,[32634]],[194935,[156478]],[194936,[32661]],[194937,[32762]],[194938,[32773]],[194939,[156890]],[194940,[156963]],[194941,[32864]],[194942,[157096]],[194943,[32880]],[194944,[144223]],[194945,[17365]],[194946,[32946]],[194947,[33027]],[194948,[17419]],[194949,[33086]],[194950,[23221]],[194951,[157607]],[194952,[157621]],[194953,[144275]],[194954,[144284]],[194955,[33281]],[194956,[33284]],[194957,[36766]],[194958,[17515]],[194959,[33425]],[194960,[33419]],[194961,[33437]],[194962,[21171]],[194963,[33457]],[194964,[33459]],[194965,[33469]],[194966,[33510]],[194967,[158524]],[194968,[33509]],[194969,[33565]],[194970,[33635]],[194971,[33709]],[194972,[33571]],[194973,[33725]],[194974,[33767]],[194975,[33879]],[194976,[33619]],[194977,[33738]],[194978,[33740]],[194979,[33756]],[194980,[158774]],[194981,[159083]],[194982,[158933]],[194983,[17707]],[194984,[34033]],[194985,[34035]],[194986,[34070]],[194987,[160714]],[194988,[34148]],[194989,[159532]],[194990,[17757]],[194991,[17761]],[194992,[159665]],[194993,[159954]],[194994,[17771]],[194995,[34384]],[194996,[34396]],[194997,[34407]],[194998,[34409]],[194999,[34473]],[195000,[34440]],[195001,[34574]],[195002,[34530]],[195003,[34681]],[195004,[34600]],[195005,[34667]],[195006,[34694]],[195007,[17879]],[195008,[34785]],[195009,[34817]],[195010,[17913]],[195011,[34912]],[195012,[34915]],[195013,[161383]],[195014,[35031]],[195015,[35038]],[195016,[17973]],[195017,[35066]],[195018,[13499]],[195019,[161966]],[195020,[162150]],[195021,[18110]],[195022,[18119]],[195023,[35488]],[195024,[35565]],[195025,[35722]],[195026,[35925]],[195027,[162984]],[195028,[36011]],[195029,[36033]],[195030,[36123]],[195031,[36215]],[195032,[163631]],[195033,[133124]],[195034,[36299]],[195035,[36284]],[195036,[36336]],[195037,[133342]],[195038,[36564]],[195039,[36664]],[195040,[165330]],[195041,[165357]],[195042,[37012]],[195043,[37105]],[195044,[37137]],[195045,[165678]],[195046,[37147]],[195047,[37432]],[195048,[37591]],[195049,[37592]],[195050,[37500]],[195051,[37881]],[195052,[37909]],[195053,[166906]],[195054,[38283]],[195055,[18837]],[195056,[38327]],[195057,[167287]],[195058,[18918]],[195059,[38595]],[195060,[23986]],[195061,[38691]],[195062,[168261]],[195063,[168474]],[195064,[19054]],[195065,[19062]],[195066,[38880]],[195067,[168970]],[195068,[19122]],[195069,[169110]],[195070,[38923]],[195071,[38923]],[195072,[38953]],[195073,[169398]],[195074,[39138]],[195075,[19251]],[195076,[39209]],[195077,[39335]],[195078,[39362]],[195079,[39422]],[195080,[19406]],[195081,[170800]],[195082,[39698]],[195083,[40000]],[195084,[40189]],[195085,[19662]],[195086,[19693]],[195087,[40295]],[195088,[172238]],[195089,[19704]],[195090,[172293]],[195091,[172558]],[195092,[172689]],[195093,[40635]],[195094,[19798]],[195095,[40697]],[195096,[40702]],[195097,[40709]],[195098,[40719]],[195099,[40726]],[195100,[40763]],[195101,[173568]]],"combining":[[768,230],[769,230],[770,230],[771,230],[772,230],[773,230],[774,230],[775,230],[776,230],[777,230],[778,230],[779,230],[780,230],[781,230],[782,230],[783,230],[784,230],[785,230],[786,230],[787,230],[788,230],[789,232],[790,220],[791,220],[792,220],[793,220],[794,232],[795,216],[796,220],[797,220],[798,220],[799,220],[800,220],[801,202],[802,202],[803,220],[804,220],[805,220],[806,220],[807,202],[808,202],[809,220],[810,220],[811,220],[812,220],[813,220],[814,220],[815,220],[816,220],[817,220],[818,220],[819,220],[820,1],[821,1],[822,1],[823,1],[824,1],[825,220],[826,220],[827,220],[828,220],[829,230],[830,230],[831,230],[832,230],[833,230],[834,230],[835,230],[836,230],[837,240],[838,230],[839,220],[840,220],[841,220],[842,230],[843,230],[844,230],[845,220],[846,220],[848,230],[849,230],[850,230],[851,220],[852,220],[853,220],[854,220],[855,230],[856,232],[857,220],[858,220],[859,230],[860,233],[861,234],[862,234],[863,233],[864,234],[865,234],[866,233],[867,230],[868,230],[869,230],[870,230],[871,230],[872,230],[873,230],[874,230],[875,230],[876,230],[877,230],[878,230],[879,230],[1155,230],[1156,230],[1157,230],[1158,230],[1159,230],[1425,220],[1426,230],[1427,230],[1428,230],[1429,230],[1430,220],[1431,230],[1432,230],[1433,230],[1434,222],[1435,220],[1436,230],[1437,230],[1438,230],[1439,230],[1440,230],[1441,230],[1442,220],[1443,220],[1444,220],[1445,220],[1446,220],[1447,220],[1448,230],[1449,230],[1450,220],[1451,230],[1452,230],[1453,222],[1454,228],[1455,230],[1456,10],[1457,11],[1458,12],[1459,13],[1460,14],[1461,15],[1462,16],[1463,17],[1464,18],[1465,19],[1466,19],[1467,20],[1468,21],[1469,22],[1471,23],[1473,24],[1474,25],[1476,230],[1477,220],[1479,18],[1552,230],[1553,230],[1554,230],[1555,230],[1556,230],[1557,230],[1558,230],[1559,230],[1560,30],[1561,31],[1562,32],[1611,27],[1612,28],[1613,29],[1614,30],[1615,31],[1616,32],[1617,33],[1618,34],[1619,230],[1620,230],[1621,220],[1622,220],[1623,230],[1624,230],[1625,230],[1626,230],[1627,230],[1628,220],[1629,230],[1630,230],[1631,220],[1648,35],[1750,230],[1751,230],[1752,230],[1753,230],[1754,230],[1755,230],[1756,230],[1759,230],[1760,230],[1761,230],[1762,230],[1763,220],[1764,230],[1767,230],[1768,230],[1770,220],[1771,230],[1772,230],[1773,220],[1809,36],[1840,230],[1841,220],[1842,230],[1843,230],[1844,220],[1845,230],[1846,230],[1847,220],[1848,220],[1849,220],[1850,230],[1851,220],[1852,220],[1853,230],[1854,220],[1855,230],[1856,230],[1857,230],[1858,220],[1859,230],[1860,220],[1861,230],[1862,220],[1863,230],[1864,220],[1865,230],[1866,230],[2027,230],[2028,230],[2029,230],[2030,230],[2031,230],[2032,230],[2033,230],[2034,220],[2035,230],[2045,220],[2070,230],[2071,230],[2072,230],[2073,230],[2075,230],[2076,230],[2077,230],[2078,230],[2079,230],[2080,230],[2081,230],[2082,230],[2083,230],[2085,230],[2086,230],[2087,230],[2089,230],[2090,230],[2091,230],[2092,230],[2093,230],[2137,220],[2138,220],[2139,220],[2200,230],[2201,220],[2202,220],[2203,220],[2204,230],[2205,230],[2206,230],[2207,230],[2250,230],[2251,230],[2252,230],[2253,230],[2254,230],[2255,220],[2256,220],[2257,220],[2258,220],[2259,220],[2260,230],[2261,230],[2262,230],[2263,230],[2264,230],[2265,230],[2266,230],[2267,230],[2268,230],[2269,230],[2270,230],[2271,230],[2272,230],[2273,230],[2275,220],[2276,230],[2277,230],[2278,220],[2279,230],[2280,230],[2281,220],[2282,230],[2283,230],[2284,230],[2285,220],[2286,220],[2287,220],[2288,27],[2289,28],[2290,29],[2291,230],[2292,230],[2293,230],[2294,220],[2295,230],[2296,230],[2297,220],[2298,220],[2299,230],[2300,230],[2301,230],[2302,230],[2303,230],[2364,7],[2381,9],[2385,230],[2386,220],[2387,230],[2388,230],[2492,7],[2509,9],[2558,230],[2620,7],[2637,9],[2748,7],[2765,9],[2876,7],[2893,9],[3021,9],[3132,7],[3149,9],[3157,84],[3158,91],[3260,7],[3277,9],[3387,9],[3388,9],[3405,9],[3530,9],[3640,103],[3641,103],[3642,9],[3656,107],[3657,107],[3658,107],[3659,107],[3768,118],[3769,118],[3770,9],[3784,122],[3785,122],[3786,122],[3787,122],[3864,220],[3865,220],[3893,220],[3895,220],[3897,216],[3953,129],[3954,130],[3956,132],[3962,130],[3963,130],[3964,130],[3965,130],[3968,130],[3970,230],[3971,230],[3972,9],[3974,230],[3975,230],[4038,220],[4151,7],[4153,9],[4154,9],[4237,220],[4957,230],[4958,230],[4959,230],[5908,9],[5909,9],[5940,9],[6098,9],[6109,230],[6313,228],[6457,222],[6458,230],[6459,220],[6679,230],[6680,220],[6752,9],[6773,230],[6774,230],[6775,230],[6776,230],[6777,230],[6778,230],[6779,230],[6780,230],[6783,220],[6832,230],[6833,230],[6834,230],[6835,230],[6836,230],[6837,220],[6838,220],[6839,220],[6840,220],[6841,220],[6842,220],[6843,230],[6844,230],[6845,220],[6847,220],[6848,220],[6849,230],[6850,230],[6851,220],[6852,220],[6853,230],[6854,230],[6855,230],[6856,230],[6857,230],[6858,220],[6859,230],[6860,230],[6861,230],[6862,230],[6964,7],[6980,9],[7019,230],[7020,220],[7021,230],[7022,230],[7023,230],[7024,230],[7025,230],[7026,230],[7027,230],[7082,9],[7083,9],[7142,7],[7154,9],[7155,9],[7223,7],[7376,230],[7377,230],[7378,230],[7380,1],[7381,220],[7382,220],[7383,220],[7384,220],[7385,220],[7386,230],[7387,230],[7388,220],[7389,220],[7390,220],[7391,220],[7392,230],[7394,1],[7395,1],[7396,1],[7397,1],[7398,1],[7399,1],[7400,1],[7405,220],[7412,230],[7416,230],[7417,230],[7616,230],[7617,230],[7618,220],[7619,230],[7620,230],[7621,230],[7622,230],[7623,230],[7624,230],[7625,230],[7626,220],[7627,230],[7628,230],[7629,234],[7630,214],[7631,220],[7632,202],[7633,230],[7634,230],[7635,230],[7636,230],[7637,230],[7638,230],[7639,230],[7640,230],[7641,230],[7642,230],[7643,230],[7644,230],[7645,230],[7646,230],[7647,230],[7648,230],[7649,230],[7650,230],[7651,230],[7652,230],[7653,230],[7654,230],[7655,230],[7656,230],[7657,230],[7658,230],[7659,230],[7660,230],[7661,230],[7662,230],[7663,230],[7664,230],[7665,230],[7666,230],[7667,230],[7668,230],[7669,230],[7670,232],[7671,228],[7672,228],[7673,220],[7674,218],[7675,230],[7676,233],[7677,220],[7678,230],[7679,220],[8400,230],[8401,230],[8402,1],[8403,1],[8404,230],[8405,230],[8406,230],[8407,230],[8408,1],[8409,1],[8410,1],[8411,230],[8412,230],[8417,230],[8421,1],[8422,1],[8423,230],[8424,220],[8425,230],[8426,1],[8427,1],[8428,220],[8429,220],[8430,220],[8431,220],[8432,230],[11503,230],[11504,230],[11505,230],[11647,9],[11744,230],[11745,230],[11746,230],[11747,230],[11748,230],[11749,230],[11750,230],[11751,230],[11752,230],[11753,230],[11754,230],[11755,230],[11756,230],[11757,230],[11758,230],[11759,230],[11760,230],[11761,230],[11762,230],[11763,230],[11764,230],[11765,230],[11766,230],[11767,230],[11768,230],[11769,230],[11770,230],[11771,230],[11772,230],[11773,230],[11774,230],[11775,230],[12330,218],[12331,228],[12332,232],[12333,222],[12334,224],[12335,224],[12441,8],[12442,8],[42607,230],[42612,230],[42613,230],[42614,230],[42615,230],[42616,230],[42617,230],[42618,230],[42619,230],[42620,230],[42621,230],[42654,230],[42655,230],[42736,230],[42737,230],[43014,9],[43052,9],[43204,9],[43232,230],[43233,230],[43234,230],[43235,230],[43236,230],[43237,230],[43238,230],[43239,230],[43240,230],[43241,230],[43242,230],[43243,230],[43244,230],[43245,230],[43246,230],[43247,230],[43248,230],[43249,230],[43307,220],[43308,220],[43309,220],[43347,9],[43443,7],[43456,9],[43696,230],[43698,230],[43699,230],[43700,220],[43703,230],[43704,230],[43710,230],[43711,230],[43713,230],[43766,9],[44013,9],[64286,26],[65056,230],[65057,230],[65058,230],[65059,230],[65060,230],[65061,230],[65062,230],[65063,220],[65064,220],[65065,220],[65066,220],[65067,220],[65068,220],[65069,220],[65070,230],[65071,230],[66045,220],[66272,220],[66422,230],[66423,230],[66424,230],[66425,230],[66426,230],[68109,220],[68111,230],[68152,230],[68153,1],[68154,220],[68159,9],[68325,230],[68326,220],[68900,230],[68901,230],[68902,230],[68903,230],[69291,230],[69292,230],[69373,220],[69374,220],[69375,220],[69446,220],[69447,220],[69448,230],[69449,230],[69450,230],[69451,220],[69452,230],[69453,220],[69454,220],[69455,220],[69456,220],[69506,230],[69507,220],[69508,230],[69509,220],[69702,9],[69744,9],[69759,9],[69817,9],[69818,7],[69888,230],[69889,230],[69890,230],[69939,9],[69940,9],[70003,7],[70080,9],[70090,7],[70197,9],[70198,7],[70377,7],[70378,9],[70459,7],[70460,7],[70477,9],[70502,230],[70503,230],[70504,230],[70505,230],[70506,230],[70507,230],[70508,230],[70512,230],[70513,230],[70514,230],[70515,230],[70516,230],[70722,9],[70726,7],[70750,230],[70850,9],[70851,7],[71103,9],[71104,7],[71231,9],[71350,9],[71351,7],[71467,9],[71737,9],[71738,7],[71997,9],[71998,9],[72003,7],[72160,9],[72244,9],[72263,9],[72345,9],[72767,9],[73026,7],[73028,9],[73029,9],[73111,9],[73537,9],[73538,9],[92912,1],[92913,1],[92914,1],[92915,1],[92916,1],[92976,230],[92977,230],[92978,230],[92979,230],[92980,230],[92981,230],[92982,230],[94192,6],[94193,6],[113822,1],[119141,216],[119142,216],[119143,1],[119144,1],[119145,1],[119149,226],[119150,216],[119151,216],[119152,216],[119153,216],[119154,216],[119163,220],[119164,220],[119165,220],[119166,220],[119167,220],[119168,220],[119169,220],[119170,220],[119173,230],[119174,230],[119175,230],[119176,230],[119177,230],[119178,220],[119179,220],[119210,230],[119211,230],[119212,230],[119213,230],[119362,230],[119363,230],[119364,230],[122880,230],[122881,230],[122882,230],[122883,230],[122884,230],[122885,230],[122886,230],[122888,230],[122889,230],[122890,230],[122891,230],[122892,230],[122893,230],[122894,230],[122895,230],[122896,230],[122897,230],[122898,230],[122899,230],[122900,230],[122901,230],[122902,230],[122903,230],[122904,230],[122907,230],[122908,230],[122909,230],[122910,230],[122911,230],[122912,230],[122913,230],[122915,230],[122916,230],[122918,230],[122919,230],[122920,230],[122921,230],[122922,230],[123023,230],[123184,230],[123185,230],[123186,230],[123187,230],[123188,230],[123189,230],[123190,230],[123566,230],[123628,230],[123629,230],[123630,230],[123631,230],[124140,232],[124141,232],[124142,220],[124143,230],[125136,220],[125137,220],[125138,220],[125139,220],[125140,220],[125141,220],[125142,220],[125252,230],[125253,230],[125254,230],[125255,230],[125256,230],[125257,230],[125258,7]],"composition":[[72418048,192],[72418049,193],[72418050,194],[72418051,195],[72418056,196],[72418058,197],[74646311,199],[76874496,200],[76874497,201],[76874498,202],[76874504,203],[81330944,204],[81330945,205],[81330946,206],[81330952,207],[86901507,209],[88015616,210],[88015617,211],[88015618,212],[88015619,213],[88015624,214],[94700288,217],[94700289,218],[94700290,219],[94700296,220],[99156737,221],[108069632,224],[108069633,225],[108069634,226],[108069635,227],[108069640,228],[108069642,229],[110297895,231],[112526080,232],[112526081,233],[112526082,234],[112526088,235],[116982528,236],[116982529,237],[116982530,238],[116982536,239],[122553091,241],[123667200,242],[123667201,243],[123667202,244],[123667203,245],[123667208,246],[130351872,249],[130351873,250],[130351874,251],[130351880,252],[134808321,253],[134808328,255],[72418052,256],[108069636,257],[72418054,258],[108069638,259],[72418088,260],[108069672,261],[74646273,262],[110297857,263],[74646274,264],[110297858,265],[74646279,266],[110297863,267],[74646284,268],[110297868,269],[75760396,270],[111411980,271],[76874500,274],[112526084,275],[76874502,276],[112526086,277],[76874503,278],[112526087,279],[76874536,280],[112526120,281],[76874508,282],[112526092,283],[79102722,284],[114754306,285],[79102726,286],[114754310,287],[79102727,288],[114754311,289],[79102759,290],[114754343,291],[80216834,292],[115868418,293],[81330947,296],[116982531,297],[81330948,298],[116982532,299],[81330950,300],[116982534,301],[81330984,302],[116982568,303],[81330951,304],[82445058,308],[118096642,309],[83559207,310],[119210791,311],[84673281,313],[120324865,314],[84673319,315],[120324903,316],[84673292,317],[120324876,318],[86901505,323],[122553089,324],[86901543,325],[122553127,326],[86901516,327],[122553100,328],[88015620,332],[123667204,333],[88015622,334],[123667206,335],[88015627,336],[123667211,337],[91357953,340],[127009537,341],[91357991,342],[127009575,343],[91357964,344],[127009548,345],[92472065,346],[128123649,347],[92472066,348],[128123650,349],[92472103,350],[128123687,351],[92472076,352],[128123660,353],[93586215,354],[129237799,355],[93586188,356],[129237772,357],[94700291,360],[130351875,361],[94700292,362],[130351876,363],[94700294,364],[130351878,365],[94700298,366],[130351882,367],[94700299,368],[130351883,369],[94700328,370],[130351912,371],[96928514,372],[132580098,373],[99156738,374],[134808322,375],[99156744,376],[100270849,377],[135922433,378],[100270855,379],[135922439,380],[100270860,381],[135922444,382],[88015643,416],[123667227,417],[94700315,431],[130351899,432],[72418060,461],[108069644,462],[81330956,463],[116982540,464],[88015628,465],[123667212,466],[94700300,467],[130351884,468],[245105412,469],[280756996,470],[245105409,471],[280756993,472],[245105420,473],[280757004,474],[245105408,475],[280756992,476],[218366724,478],[254018308,479],[612762372,480],[613876484,481],[220594948,482],[256246532,483],[79102732,486],[114754316,487],[83559180,488],[119210764,489],[88015656,490],[123667240,491],[545915652,492],[547029764,493],[489095948,494],[733086476,495],[118096652,496],[79102721,500],[114754305,501],[86901504,504],[122553088,505],[219480833,506],[255132417,507],[220594945,508],[256246529,509],[240648961,510],[276300545,511],[72418063,512],[108069647,513],[72418065,514],[108069649,515],[76874511,516],[112526095,517],[76874513,518],[112526097,519],[81330959,520],[116982543,521],[81330961,522],[116982545,523],[88015631,524],[123667215,525],[88015633,526],[123667217,527],[91357967,528],[127009551,529],[91357969,530],[127009553,531],[94700303,532],[130351887,533],[94700305,534],[130351889,535],[92472102,536],[128123686,537],[93586214,538],[129237798,539],[80216844,542],[115868428,543],[72418055,550],[108069639,551],[76874535,552],[112526119,553],[238420740,554],[274072324,555],[237306628,556],[272958212,557],[88015623,558],[123667207,559],[621675268,560],[622789380,561],[99156740,562],[134808324,563],[187171585,901],[1017185025,902],[1021641473,904],[1023869697,905],[1026097921,906],[1032782593,908],[1039467265,910],[1043923713,911],[1080689409,912],[1026097928,938],[1039467272,939],[1052836609,940],[1057293057,941],[1059521281,942],[1061749505,943],[1081803521,944],[1061749512,970],[1075118856,971],[1068434177,972],[1075118849,973],[1079575297,974],[1089602305,979],[1089602312,980],[1164247808,1024],[1164247816,1025],[1162019585,1027],[1147536136,1031],[1169818369,1036],[1167590144,1037],[1179845382,1038],[1167590150,1049],[1203241734,1081],[1199899392,1104],[1199899400,1105],[1197671169,1107],[1236665096,1111],[1205469953,1116],[1203241728,1117],[1215496966,1118],[1270088463,1142],[1271202575,1143],[1165361926,1217],[1201013510,1218],[1158677254,1232],[1194328838,1233],[1158677256,1234],[1194328840,1235],[1164247814,1238],[1199899398,1239],[1381499656,1242],[1382613768,1243],[1165361928,1244],[1201013512,1245],[1166476040,1246],[1202127624,1247],[1167590148,1250],[1203241732,1251],[1167590152,1252],[1203241736,1253],[1174274824,1254],[1209926408,1255],[1399325448,1258],[1400439560,1259],[1190986504,1260],[1226638088,1261],[1179845380,1262],[1215496964,1263],[1179845384,1264],[1215496968,1265],[1179845387,1266],[1215496971,1267],[1184301832,1268],[1219953416,1269],[1188758280,1272],[1224409864,1273],[1754728019,1570],[1754728020,1571],[1791493716,1572],[1754728021,1573],[1793721940,1574],[1948583508,1728],[1926301268,1730],[1945241172,1747],[2611480892,2345],[2620393788,2353],[2623736124,2356],[2788624830,2507],[2788624855,2508],[3216444246,2888],[3216444222,2891],[3216444247,2892],[3300002775,2964],[3357936574,3018],[3359050686,3019],[3357936599,3020],[3500543062,3144],[3635350741,3264],[3643149525,3271],[3643149526,3272],[3643149506,3274],[3647605973,3275],[3785755966,3402],[3786870078,3403],[3785755991,3404],[3949530570,3546],[3949530575,3548],[3952872906,3549],[3949530591,3550],[4604629038,4134],[7706319669,6918],[7708547893,6920],[7710776117,6922],[7713004341,6924],[7715232565,6926],[7719689013,6930],[7765367605,6971],[7767595829,6973],[7769824053,6976],[7770938165,6977],[7774280501,6979],[72418085,7680],[108069669,7681],[73532167,7682],[109183751,7683],[73532195,7684],[109183779,7685],[73532209,7686],[109183793,7687],[221709057,7688],[257360641,7689],[75760391,7690],[111411975,7691],[75760419,7692],[111412003,7693],[75760433,7694],[111412017,7695],[75760423,7696],[111412007,7697],[75760429,7698],[111412013,7699],[305267456,7700],[306381568,7701],[305267457,7702],[306381569,7703],[76874541,7704],[112526125,7705],[76874544,7706],[112526128,7707],[614990598,7708],[616104710,7709],[77988615,7710],[113640199,7711],[79102724,7712],[114754308,7713],[80216839,7714],[115868423,7715],[80216867,7716],[115868451,7717],[80216840,7718],[115868424,7719],[80216871,7720],[115868455,7721],[80216878,7722],[115868462,7723],[81330992,7724],[116982576,7725],[230621953,7726],[266273537,7727],[83559169,7728],[119210753,7729],[83559203,7730],[119210787,7731],[83559217,7732],[119210801,7733],[84673315,7734],[120324899,7735],[8616542980,7736],[8617657092,7737],[84673329,7738],[120324913,7739],[84673325,7740],[120324909,7741],[85787393,7742],[121438977,7743],[85787399,7744],[121438983,7745],[85787427,7746],[121439011,7747],[86901511,7748],[122553095,7749],[86901539,7750],[122553123,7751],[86901553,7752],[122553137,7753],[86901549,7754],[122553133,7755],[237306625,7756],[272958209,7757],[237306632,7758],[272958216,7759],[369885952,7760],[371000064,7761],[369885953,7762],[371000065,7763],[89129729,7764],[124781313,7765],[89129735,7766],[124781319,7767],[91357959,7768],[127009543,7769],[91357987,7770],[127009571,7771],[8656651012,7772],[8657765124,7773],[91358001,7774],[127009585,7775],[92472071,7776],[128123655,7777],[92472099,7778],[128123683,7779],[385483527,7780],[386597639,7781],[392168199,7782],[393282311,7783],[8665563911,7784],[8666678023,7785],[93586183,7786],[129237767,7787],[93586211,7788],[129237795,7789],[93586225,7790],[129237809,7791],[93586221,7792],[129237805,7793],[94700324,7794],[130351908,7795],[94700336,7796],[130351920,7797],[94700333,7798],[130351917,7799],[401081089,7800],[402195201,7801],[403309320,7802],[404423432,7803],[95814403,7804],[131465987,7805],[95814435,7806],[131466019,7807],[96928512,7808],[132580096,7809],[96928513,7810],[132580097,7811],[96928520,7812],[132580104,7813],[96928519,7814],[132580103,7815],[96928547,7816],[132580131,7817],[98042631,7818],[133694215,7819],[98042632,7820],[133694216,7821],[99156743,7822],[134808327,7823],[100270850,7824],[135922434,7825],[100270883,7826],[135922467,7827],[100270897,7828],[135922481,7829],[115868465,7830],[129237768,7831],[132580106,7832],[134808330,7833],[426705671,7835],[72418083,7840],[108069667,7841],[72418057,7842],[108069641,7843],[216138497,7844],[251790081,7845],[216138496,7846],[251790080,7847],[216138505,7848],[251790089,7849],[216138499,7850],[251790083,7851],[8734638850,7852],[8735752962,7853],[287441665,7854],[288555777,7855],[287441664,7856],[288555776,7857],[287441673,7858],[288555785,7859],[287441667,7860],[288555779,7861],[8734638854,7862],[8735752966,7863],[76874531,7864],[112526115,7865],[76874505,7866],[112526089,7867],[76874499,7868],[112526083,7869],[225051393,7870],[260702977,7871],[225051392,7872],[260702976,7873],[225051401,7874],[260702985,7875],[225051395,7876],[260702979,7877],[8761377538,7878],[8762491650,7879],[81330953,7880],[116982537,7881],[81330979,7882],[116982563,7883],[88015651,7884],[123667235,7885],[88015625,7886],[123667209,7887],[236192513,7888],[271844097,7889],[236192512,7890],[271844096,7891],[236192521,7892],[271844105,7893],[236192515,7894],[271844099,7895],[8783659778,7896],[8784773890,7897],[463471361,7898],[464585473,7899],[463471360,7900],[464585472,7901],[463471369,7902],[464585481,7903],[463471363,7904],[464585475,7905],[463471395,7906],[464585507,7907],[94700323,7908],[130351907,7909],[94700297,7910],[130351881,7911],[480183041,7912],[481297153,7913],[480183040,7914],[481297152,7915],[480183049,7916],[481297161,7917],[480183043,7918],[481297155,7919],[480183075,7920],[481297187,7921],[99156736,7922],[134808320,7923],[99156771,7924],[134808355,7925],[99156745,7926],[134808329,7927],[99156739,7928],[134808323,7929],[1052836627,7936],[1052836628,7937],[8841593600,7938],[8842707712,7939],[8841593601,7940],[8842707713,7941],[8841593666,7942],[8842707778,7943],[1017185043,7944],[1017185044,7945],[8850506496,7946],[8851620608,7947],[8850506497,7948],[8851620609,7949],[8850506562,7950],[8851620674,7951],[1057293075,7952],[1057293076,7953],[8859419392,7954],[8860533504,7955],[8859419393,7956],[8860533505,7957],[1021641491,7960],[1021641492,7961],[8868332288,7962],[8869446400,7963],[8868332289,7964],[8869446401,7965],[1059521299,7968],[1059521300,7969],[8877245184,7970],[8878359296,7971],[8877245185,7972],[8878359297,7973],[8877245250,7974],[8878359362,7975],[1023869715,7976],[1023869716,7977],[8886158080,7978],[8887272192,7979],[8886158081,7980],[8887272193,7981],[8886158146,7982],[8887272258,7983],[1061749523,7984],[1061749524,7985],[8895070976,7986],[8896185088,7987],[8895070977,7988],[8896185089,7989],[8895071042,7990],[8896185154,7991],[1026097939,7992],[1026097940,7993],[8903983872,7994],[8905097984,7995],[8903983873,7996],[8905097985,7997],[8903983938,7998],[8905098050,7999],[1068434195,8000],[1068434196,8001],[8912896768,8002],[8914010880,8003],[8912896769,8004],[8914010881,8005],[1032782611,8008],[1032782612,8009],[8921809664,8010],[8922923776,8011],[8921809665,8012],[8922923777,8013],[1075118867,8016],[1075118868,8017],[8930722560,8018],[8931836672,8019],[8930722561,8020],[8931836673,8021],[8930722626,8022],[8931836738,8023],[1039467284,8025],[8940749568,8027],[8940749569,8029],[8940749634,8031],[1079575315,8032],[1079575316,8033],[8948548352,8034],[8949662464,8035],[8948548353,8036],[8949662465,8037],[8948548418,8038],[8949662530,8039],[1043923731,8040],[1043923732,8041],[8957461248,8042],[8958575360,8043],[8957461249,8044],[8958575361,8045],[8957461314,8046],[8958575426,8047],[1052836608,8048],[1057293056,8050],[1059521280,8052],[1061749504,8054],[1068434176,8056],[1075118848,8058],[1079575296,8060],[8841593669,8064],[8842707781,8065],[8843821893,8066],[8844936005,8067],[8846050117,8068],[8847164229,8069],[8848278341,8070],[8849392453,8071],[8850506565,8072],[8851620677,8073],[8852734789,8074],[8853848901,8075],[8854963013,8076],[8856077125,8077],[8857191237,8078],[8858305349,8079],[8877245253,8080],[8878359365,8081],[8879473477,8082],[8880587589,8083],[8881701701,8084],[8882815813,8085],[8883929925,8086],[8885044037,8087],[8886158149,8088],[8887272261,8089],[8888386373,8090],[8889500485,8091],[8890614597,8092],[8891728709,8093],[8892842821,8094],[8893956933,8095],[8948548421,8096],[8949662533,8097],[8950776645,8098],[8951890757,8099],[8953004869,8100],[8954118981,8101],[8955233093,8102],[8956347205,8103],[8957461317,8104],[8958575429,8105],[8959689541,8106],[8960803653,8107],[8961917765,8108],[8963031877,8109],[8964145989,8110],[8965260101,8111],[1052836614,8112],[1052836612,8113],[8966374213,8114],[1052836677,8115],[1047266117,8116],[1052836674,8118],[9044362053,8119],[1017185030,8120],[1017185028,8121],[1017185024,8122],[1017185093,8124],[187171650,8129],[8970830661,8130],[1059521349,8131],[1049494341,8132],[1059521346,8134],[9062187845,8135],[1021641472,8136],[1023869696,8138],[1023869765,8140],[9054388992,8141],[9054388993,8142],[9054389058,8143],[1061749510,8144],[1061749508,8145],[1080689408,8146],[1061749570,8150],[1080689474,8151],[1026097926,8152],[1026097924,8153],[1026097920,8154],[9124578048,8157],[9124578049,8158],[9124578114,8159],[1075118854,8160],[1075118852,8161],[1081803520,8162],[1070662419,8164],[1070662420,8165],[1075118914,8166],[1081803586,8167],[1039467270,8168],[1039467268,8169],[1039467264,8170],[1035010836,8172],[187171584,8173],[8979743557,8178],[1079575365,8179],[1085145925,8180],[1079575362,8182],[9115665221,8183],[1032782592,8184],[1043923712,8186],[1043923781,8188],[9572451128,8602],[9574679352,8603],[9576907576,8622],[9643754296,8653],[9648210744,8654],[9645982520,8655],[9700574008,8708],[9706144568,8713],[9709486904,8716],[9736225592,8740],[9738453816,8742],[9764078392,8769],[9771877176,8772],[9774105400,8775],[9777447736,8777],[67961656,8800],[9805300536,8802],[9783018296,8813],[66847544,8814],[69075768,8815],[9808642872,8816],[9809756984,8817],[9824240440,8820],[9825354552,8821],[9828696888,8824],[9829811000,8825],[9833153336,8832],[9834267448,8833],[9842066232,8836],[9843180344,8837],[9846522680,8840],[9847636792,8841],[9877717816,8876],[9884402488,8877],[9885516600,8878],[9887744824,8879],[9835381560,8928],[9836495672,8929],[9858777912,8930],[9859892024,8931],[9895543608,8938],[9896657720,8939],[9897771832,8940],[9898885944,8941],[13773779097,12364],[13776007321,12366],[13778235545,12368],[13780463769,12370],[13782691993,12372],[13784920217,12374],[13787148441,12376],[13789376665,12378],[13791604889,12380],[13793833113,12382],[13796061337,12384],[13798289561,12386],[13801631897,12389],[13803860121,12391],[13806088345,12393],[13813887129,12400],[13813887130,12401],[13817229465,12403],[13817229466,12404],[13820571801,12406],[13820571802,12407],[13823914137,12409],[13823914138,12410],[13827256473,12412],[13827256474,12413],[13768208537,12436],[13865136281,12446],[13880733849,12460],[13882962073,12462],[13885190297,12464],[13887418521,12466],[13889646745,12468],[13891874969,12470],[13894103193,12472],[13896331417,12474],[13898559641,12476],[13900787865,12478],[13903016089,12480],[13905244313,12482],[13908586649,12485],[13910814873,12487],[13913043097,12489],[13920841881,12496],[13920841882,12497],[13924184217,12499],[13924184218,12500],[13927526553,12502],[13927526554,12503],[13930868889,12505],[13930868890,12506],[13934211225,12508],[13934211226,12509],[13875163289,12532],[13956493465,12535],[13957607577,12536],[13958721689,12537],[13959835801,12538],[13972091033,12542],[77748375738,69786],[77750603962,69788],[77761745082,69803],[77917720871,69934],[77918834983,69935],[78512657214,70475],[78512657239,70476],[78924879034,70843],[78924879024,70844],[78924879037,70846],[79208977839,71098],[79210091951,71099],[80203880752,71992]]}
|
|
483
|
+
_PACTILE_DECOMPOSITION = dict(_PACTILE_NFC_DATA["decomposition"])
|
|
484
|
+
_PACTILE_COMBINING = dict(_PACTILE_NFC_DATA["combining"])
|
|
485
|
+
_PACTILE_COMPOSITION = dict(_PACTILE_NFC_DATA["composition"])
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
def normalize_nfc_15(value: str) -> str:
|
|
489
|
+
"""Canonical decomposition, stable ordering and composition, Unicode 15."""
|
|
490
|
+
decomposed = []
|
|
491
|
+
|
|
492
|
+
def decompose(code):
|
|
493
|
+
if 0xAC00 <= code < 0xD7A4:
|
|
494
|
+
offset = code - 0xAC00
|
|
495
|
+
decomposed.extend((0x1100 + offset // 588, 0x1161 + (offset % 588) // 28))
|
|
496
|
+
if offset % 28:
|
|
497
|
+
decomposed.append(0x11A7 + offset % 28)
|
|
498
|
+
elif code in _PACTILE_DECOMPOSITION:
|
|
499
|
+
for part in _PACTILE_DECOMPOSITION[code]:
|
|
500
|
+
decompose(part)
|
|
501
|
+
else:
|
|
502
|
+
decomposed.append(code)
|
|
503
|
+
|
|
504
|
+
def compose_pair(starter, code):
|
|
505
|
+
if 0x1100 <= starter < 0x1113 and 0x1161 <= code < 0x1176:
|
|
506
|
+
return 0xAC00 + (starter - 0x1100) * 588 + (code - 0x1161) * 28
|
|
507
|
+
if 0xAC00 <= starter < 0xD7A4 and (starter - 0xAC00) % 28 == 0 and 0x11A7 < code < 0x11C3:
|
|
508
|
+
return starter + code - 0x11A7
|
|
509
|
+
return _PACTILE_COMPOSITION.get(starter * 0x110000 + code)
|
|
510
|
+
|
|
511
|
+
for character in value:
|
|
512
|
+
decompose(ord(character))
|
|
513
|
+
ordered, marks = [], []
|
|
514
|
+
for code in decomposed:
|
|
515
|
+
if _PACTILE_COMBINING.get(code, 0) == 0:
|
|
516
|
+
ordered.extend(sorted(marks, key=lambda mark: _PACTILE_COMBINING.get(mark, 0)))
|
|
517
|
+
marks = []
|
|
518
|
+
ordered.append(code)
|
|
519
|
+
else:
|
|
520
|
+
marks.append(code)
|
|
521
|
+
ordered.extend(sorted(marks, key=lambda mark: _PACTILE_COMBINING.get(mark, 0)))
|
|
522
|
+
result = []
|
|
523
|
+
starter, previous_class = -1, 0
|
|
524
|
+
for code in ordered:
|
|
525
|
+
current_class = _PACTILE_COMBINING.get(code, 0)
|
|
526
|
+
composed = compose_pair(result[starter], code) if starter >= 0 and (previous_class == 0 or previous_class < current_class) else None
|
|
527
|
+
if composed is not None:
|
|
528
|
+
result[starter] = composed
|
|
529
|
+
else:
|
|
530
|
+
if current_class == 0:
|
|
531
|
+
starter = len(result)
|
|
532
|
+
result.append(code)
|
|
533
|
+
previous_class = current_class
|
|
534
|
+
return "".join(map(chr, result))
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
def case_fold_component(value: str) -> str:
|
|
538
|
+
folded = []
|
|
539
|
+
for character in normalize_nfc_15(value):
|
|
540
|
+
code = ord(character)
|
|
541
|
+
if code in _PACTILE_FOLD_SPECIAL:
|
|
542
|
+
folded.append(_PACTILE_FOLD_SPECIAL[code])
|
|
543
|
+
continue
|
|
544
|
+
low, high = 0, len(_PACTILE_FOLD_RANGES) - 1
|
|
545
|
+
while low <= high:
|
|
546
|
+
mid = (low + high) // 2
|
|
547
|
+
start, end, delta = _PACTILE_FOLD_RANGES[mid]
|
|
548
|
+
if code < start:
|
|
549
|
+
high = mid - 1
|
|
550
|
+
elif code > end:
|
|
551
|
+
low = mid + 1
|
|
552
|
+
else:
|
|
553
|
+
folded.append(chr(code + delta))
|
|
554
|
+
break
|
|
555
|
+
else:
|
|
556
|
+
folded.append(character)
|
|
557
|
+
return "".join(folded)
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
def normalize_runtime_relative_path(value: str) -> str:
|
|
561
|
+
normalized = normalize_nfc_15(value.replace("\\", "/"))
|
|
562
|
+
parts = normalized.split("/")
|
|
563
|
+
if not normalized or normalized.startswith("/") or any(
|
|
564
|
+
not part or part in (".", "..") or re.search(r'[<>:"|?*]', part)
|
|
565
|
+
or any(ord(char) < 32 or ord(char) == 127 for char in part)
|
|
566
|
+
or part.endswith((".", " "))
|
|
567
|
+
or re.match(r"^(con|prn|aux|nul|com[1-9¹²³]|lpt[1-9¹²³])(?:\.|$)", part, re.I)
|
|
568
|
+
for part in parts
|
|
569
|
+
):
|
|
570
|
+
raise PactileRuntimeError("outside-project")
|
|
571
|
+
return normalized
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
def resolve_canonical_paths(project_root: str) -> dict:
|
|
575
|
+
import os
|
|
576
|
+
root = os.path.abspath(project_root)
|
|
577
|
+
return {
|
|
578
|
+
"projectRoot": root,
|
|
579
|
+
**{key: os.path.join(root, relative.replace("/", os.sep)) for key, relative in PACTILE_PATHS_V1.items()},
|
|
580
|
+
"writePolicy": "canonical-only",
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
def _pactile_lstat(target: str):
|
|
585
|
+
import os
|
|
586
|
+
try:
|
|
587
|
+
return os.lstat(target)
|
|
588
|
+
except FileNotFoundError:
|
|
589
|
+
return None
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
def _pactile_is_link(info) -> bool:
|
|
593
|
+
import stat
|
|
594
|
+
return stat.S_ISLNK(info.st_mode) or bool(
|
|
595
|
+
getattr(info, "st_file_attributes", 0) & getattr(stat, "FILE_ATTRIBUTE_REPARSE_POINT", 0x400)
|
|
596
|
+
)
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
def _pactile_same_path(left: str, right: str) -> bool:
|
|
600
|
+
"""Treat Windows junction/8.3 spellings of one inode as the same path."""
|
|
601
|
+
import os
|
|
602
|
+
try:
|
|
603
|
+
if os.path.samefile(left, right):
|
|
604
|
+
return True
|
|
605
|
+
except (OSError, ValueError):
|
|
606
|
+
pass
|
|
607
|
+
return os.path.normcase(os.path.abspath(left)) == os.path.normcase(os.path.abspath(right))
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
def _pactile_assert_root(root: str) -> None:
|
|
611
|
+
import os
|
|
612
|
+
import stat
|
|
613
|
+
root_stat = _pactile_lstat(root)
|
|
614
|
+
if root_stat is None:
|
|
615
|
+
raise PactileRuntimeError("outside-project")
|
|
616
|
+
if _pactile_is_link(root_stat):
|
|
617
|
+
raise PactileRuntimeError("link-escape")
|
|
618
|
+
if not stat.S_ISDIR(root_stat.st_mode):
|
|
619
|
+
raise PactileRuntimeError("outside-project")
|
|
620
|
+
if not _pactile_same_path(os.path.realpath(root), root):
|
|
621
|
+
raise PactileRuntimeError("link-escape")
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
def assert_canonical_write_target(project_root: str, target: str) -> str:
|
|
625
|
+
import os
|
|
626
|
+
import stat
|
|
627
|
+
root = os.path.abspath(project_root)
|
|
628
|
+
absolute = os.path.abspath(target if os.path.isabs(target) else os.path.join(root, target.replace("\\", "/")))
|
|
629
|
+
try:
|
|
630
|
+
relative = os.path.relpath(absolute, root)
|
|
631
|
+
except ValueError:
|
|
632
|
+
raise PactileRuntimeError("outside-project") from None
|
|
633
|
+
if relative == ".." or relative.startswith(".." + os.sep) or os.path.isabs(relative):
|
|
634
|
+
raise PactileRuntimeError("outside-project")
|
|
635
|
+
raw_relative = os.path.relpath(target, root) if os.path.isabs(target) else target
|
|
636
|
+
parts = normalize_runtime_relative_path(raw_relative).split("/")
|
|
637
|
+
first = case_fold_component(parts[0])
|
|
638
|
+
if first in (".cstl", ".trellis"):
|
|
639
|
+
raise PactileRuntimeError("legacy-write-denied")
|
|
640
|
+
if first != ".pactile":
|
|
641
|
+
raise PactileRuntimeError("outside-project")
|
|
642
|
+
if parts[0] != ".pactile":
|
|
643
|
+
raise PactileRuntimeError("canonical-collision")
|
|
644
|
+
_pactile_assert_root(root)
|
|
645
|
+
real_root = os.path.realpath(root)
|
|
646
|
+
current = root
|
|
647
|
+
for index, part in enumerate(parts):
|
|
648
|
+
parent_stat = _pactile_lstat(current)
|
|
649
|
+
if parent_stat:
|
|
650
|
+
matches = [name for name in os.listdir(current) if case_fold_component(name) == case_fold_component(part)]
|
|
651
|
+
if len(matches) > 1 or (len(matches) == 1 and matches[0] != part):
|
|
652
|
+
raise PactileRuntimeError("canonical-collision")
|
|
653
|
+
current = os.path.join(current, part)
|
|
654
|
+
info = _pactile_lstat(current)
|
|
655
|
+
if info is None:
|
|
656
|
+
continue
|
|
657
|
+
real = os.path.realpath(current)
|
|
658
|
+
if _pactile_is_link(info) or not _pactile_same_path(real, current):
|
|
659
|
+
raise PactileRuntimeError("link-escape")
|
|
660
|
+
try:
|
|
661
|
+
relative_real = os.path.relpath(real, real_root)
|
|
662
|
+
except ValueError:
|
|
663
|
+
raise PactileRuntimeError("link-escape") from None
|
|
664
|
+
if relative_real == ".." or relative_real.startswith(".." + os.sep) or os.path.isabs(relative_real):
|
|
665
|
+
raise PactileRuntimeError("link-escape")
|
|
666
|
+
if stat.S_ISREG(info.st_mode) and info.st_nlink > 1:
|
|
667
|
+
raise PactileRuntimeError("link-escape")
|
|
668
|
+
if not stat.S_ISREG(info.st_mode) and not stat.S_ISDIR(info.st_mode):
|
|
669
|
+
raise PactileRuntimeError("link-escape")
|
|
670
|
+
if index < len(parts) - 1 and not stat.S_ISDIR(info.st_mode):
|
|
671
|
+
raise PactileRuntimeError("state-malformed")
|
|
672
|
+
return current
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
def discover_runtime_roots(project_root: str) -> dict:
|
|
676
|
+
import os
|
|
677
|
+
import stat
|
|
678
|
+
root = os.path.abspath(project_root)
|
|
679
|
+
_pactile_assert_root(root)
|
|
680
|
+
real_root = os.path.realpath(root)
|
|
681
|
+
names = os.listdir(root)
|
|
682
|
+
diagnostics = []
|
|
683
|
+
|
|
684
|
+
def inspect(name: str) -> bool:
|
|
685
|
+
matches = [entry for entry in names if case_fold_component(entry) == name]
|
|
686
|
+
if len(matches) > 1 or (len(matches) == 1 and matches[0] != name):
|
|
687
|
+
diagnostics.append({"code": "canonical-collision", "root": name})
|
|
688
|
+
return False
|
|
689
|
+
if not matches:
|
|
690
|
+
return False
|
|
691
|
+
target = os.path.join(root, name)
|
|
692
|
+
info = os.lstat(target)
|
|
693
|
+
real = os.path.realpath(target)
|
|
694
|
+
if _pactile_is_link(info) or not _pactile_same_path(real, target):
|
|
695
|
+
diagnostics.append({"code": "link-escape", "root": name})
|
|
696
|
+
return False
|
|
697
|
+
try:
|
|
698
|
+
relative_real = os.path.relpath(real, real_root)
|
|
699
|
+
except ValueError:
|
|
700
|
+
diagnostics.append({"code": "link-escape", "root": name})
|
|
701
|
+
return False
|
|
702
|
+
if relative_real == ".." or relative_real.startswith(".." + os.sep) or os.path.isabs(relative_real):
|
|
703
|
+
diagnostics.append({"code": "link-escape", "root": name})
|
|
704
|
+
return False
|
|
705
|
+
if not stat.S_ISDIR(info.st_mode):
|
|
706
|
+
diagnostics.append({"code": "state-malformed", "root": name})
|
|
707
|
+
return False
|
|
708
|
+
return True
|
|
709
|
+
|
|
710
|
+
canonical = {"root": ".pactile", "present": inspect(".pactile"), "access": "canonical-only"}
|
|
711
|
+
legacy = [
|
|
712
|
+
{"kind": kind, "root": name, "present": inspect(name), "access": "read-only"}
|
|
713
|
+
for kind, name in (("cstl", ".cstl"), ("trellis", ".trellis"))
|
|
714
|
+
]
|
|
715
|
+
return {"canonical": canonical, "legacy": legacy, "diagnostics": diagnostics}
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
def handle_runtime_path_request(request) -> dict:
|
|
719
|
+
"""Public JSON ABI. Errors contain stable reason codes, never private data."""
|
|
720
|
+
try:
|
|
721
|
+
if not isinstance(request, dict):
|
|
722
|
+
raise PactileRuntimeError("state-malformed")
|
|
723
|
+
operation = request.get("operation")
|
|
724
|
+
shapes = {
|
|
725
|
+
"normalize": {"operation", "path"},
|
|
726
|
+
"fold": {"operation", "component"},
|
|
727
|
+
"resolve": {"operation", "projectRoot"},
|
|
728
|
+
"discover": {"operation", "projectRoot"},
|
|
729
|
+
"guard": {"operation", "projectRoot", "target"},
|
|
730
|
+
}
|
|
731
|
+
if not isinstance(operation, str) or operation not in shapes or set(request) != shapes[operation] or any(not isinstance(value, str) for value in request.values()):
|
|
732
|
+
raise PactileRuntimeError("state-malformed")
|
|
733
|
+
if operation == "normalize":
|
|
734
|
+
result = normalize_runtime_relative_path(request["path"])
|
|
735
|
+
elif operation == "fold":
|
|
736
|
+
result = case_fold_component(request["component"])
|
|
737
|
+
elif operation == "resolve":
|
|
738
|
+
result = {key: value.replace("\\", "/") for key, value in resolve_canonical_paths(request["projectRoot"]).items()}
|
|
739
|
+
elif operation == "discover":
|
|
740
|
+
result = discover_runtime_roots(request["projectRoot"])
|
|
741
|
+
else:
|
|
742
|
+
result = assert_canonical_write_target(request["projectRoot"], request["target"]).replace("\\", "/")
|
|
743
|
+
return {"ok": True, "result": result}
|
|
744
|
+
except PactileRuntimeError as error:
|
|
745
|
+
return {"ok": False, "error": {"code": error.code}}
|
|
746
|
+
except (OSError, ValueError, TypeError):
|
|
747
|
+
return {"ok": False, "error": {"code": "state-malformed"}}
|
|
748
|
+
|
|
749
|
+
if __name__ == "__main__":
|
|
750
|
+
repo = get_repo_root()
|
|
751
|
+
print(f"Repository root: {repo}")
|
|
752
|
+
print(f"Developer: {get_developer(repo)}")
|
|
753
|
+
print(f"Tasks dir: {get_tasks_dir(repo)}")
|
|
754
|
+
print(f"Workspace dir: {get_workspace_dir(repo)}")
|
|
755
|
+
print(f"Journal file: {get_active_journal_file(repo)}")
|
|
756
|
+
print(f"Selected task: {get_selected_task(repo)}")
|