actdim-along 4.9.0__tar.gz

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.
Files changed (459) hide show
  1. actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/rules/gates.yaml +21 -0
  2. actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/rules/languages/python.md +132 -0
  3. actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/rules/languages/typescript.md +122 -0
  4. actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/rules/platforms/web.md +59 -0
  5. actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/scripts/build.py +30 -0
  6. actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/scripts/dev.py +80 -0
  7. actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/scripts/test.py +352 -0
  8. actdim_along-4.9.0/.along/rules/gates.yaml +21 -0
  9. actdim_along-4.9.0/.along/rules/languages/python.md +132 -0
  10. actdim_along-4.9.0/.along/rules/languages/typescript.md +122 -0
  11. actdim_along-4.9.0/.along/rules/platforms/web.md +59 -0
  12. actdim_along-4.9.0/.along/scripts/build.py +30 -0
  13. actdim_along-4.9.0/.along/scripts/dev.py +80 -0
  14. actdim_along-4.9.0/.along/scripts/test.py +352 -0
  15. actdim_along-4.9.0/.archive/README.md +5 -0
  16. actdim_along-4.9.0/.gitignore +65 -0
  17. actdim_along-4.9.0/AGENTS.md +65 -0
  18. actdim_along-4.9.0/LICENSE +21 -0
  19. actdim_along-4.9.0/PKG-INFO +289 -0
  20. actdim_along-4.9.0/README.md +240 -0
  21. actdim_along-4.9.0/config/along-config.example.json +26 -0
  22. actdim_along-4.9.0/dashboard/__init__.py +16 -0
  23. actdim_along-4.9.0/dashboard/api/__init__.py +8 -0
  24. actdim_along-4.9.0/dashboard/api/entities_api.py +81 -0
  25. actdim_along-4.9.0/dashboard/api/events_api.py +22 -0
  26. actdim_along-4.9.0/dashboard/api/kb_api.py +59 -0
  27. actdim_along-4.9.0/dashboard/api/metrics_api.py +31 -0
  28. actdim_along-4.9.0/dashboard/api/router.py +15 -0
  29. actdim_along-4.9.0/dashboard/app.py +306 -0
  30. actdim_along-4.9.0/dashboard/core/collector.py +524 -0
  31. actdim_along-4.9.0/dashboard/core/graph.py +347 -0
  32. actdim_along-4.9.0/dashboard/core/kb_engine.py +209 -0
  33. actdim_along-4.9.0/dashboard/core/watcher.py +61 -0
  34. actdim_along-4.9.0/dashboard/schemas/__init__.py +50 -0
  35. actdim_along-4.9.0/dashboard/schemas/entities.py +118 -0
  36. actdim_along-4.9.0/dashboard/schemas/kb.py +46 -0
  37. actdim_along-4.9.0/dashboard/schemas/metrics.py +71 -0
  38. actdim_along-4.9.0/dashboard/schemas/search.py +21 -0
  39. actdim_along-4.9.0/docs/INDEX.md +120 -0
  40. actdim_along-4.9.0/docs/decisions/ADR-2026-08-15--single-file-append-only-decisions.md +19 -0
  41. actdim_along-4.9.0/docs/decisions/ADR-2026-08-26--code-graph-mcp-and-hybrid-kb-search.md +17 -0
  42. actdim_along-4.9.0/docs/decisions/ADR-2026-08-26--protocol-v120-knowledge-base-architecture.md +17 -0
  43. actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--along-v200-rebranding-and-namespace-isolation.md +21 -0
  44. actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--autonomous-multi-mode-dashboard-and-analytics-engine.md +19 -0
  45. actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--entity-relationships-unidirectional-graph-and-canonical-slugs.md +20 -0
  46. actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--mandatory-code-review-and-blast-radius-impact-gate.md +20 -0
  47. actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--protocol-v150-automated-entities-and-intent-heuristics.md +17 -0
  48. actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--unified-along-wrap-commit-and-lifecycle-runners.md +20 -0
  49. actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--universal-version-bumping-and-scripts-ecosystem.md +21 -0
  50. actdim_along-4.9.0/docs/decisions/ADR-2026-08-28--frontend-dynstruct-architecture-and-msgmesh-adapters.md +24 -0
  51. actdim_along-4.9.0/docs/decisions/ADR-2026-08-30--llm-wiki-docs-architecture-and-singular-skills-refactoring.md +33 -0
  52. actdim_along-4.9.0/docs/decisions/ADR-2026-08-30--multi-agent-protocol-along-team-and-goal-integration.md +32 -0
  53. actdim_along-4.9.0/docs/decisions/ADR-2026-08-31--concurrency-projections-and-context-deprecation.md +25 -0
  54. actdim_along-4.9.0/docs/decisions/ADR-2026-08-31--global-self-diagnostics-and-feedback-subsystem.md +16 -0
  55. actdim_along-4.9.0/docs/decisions/ADR-2026-08-31--session-scoped-blackboard-memory-and-role-contracts.md +36 -0
  56. actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--frontmatter-on-ruamel-yaml.md +21 -0
  57. actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--installers-never-delete-what-they-did-not-write.md +22 -0
  58. actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--migration-never-deletes-a-destination.md +22 -0
  59. actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--release-gates-before-mutations.md +22 -0
  60. actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--requirement-traceability-and-public-surface-gate.md +19 -0
  61. actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--shared-engine-package.md +21 -0
  62. actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--typography-rule-scope.md +22 -0
  63. actdim_along-4.9.0/docs/decisions/ADR-2026-09-06--engineering-provenance-and-dual-track-artifact-loop.md +31 -0
  64. actdim_along-4.9.0/docs/decisions/ADR-2026-09-06--provider-agnostic-subagent-abstraction.md +20 -0
  65. actdim_along-4.9.0/docs/decisions/ADR-2026-09-06--windows-git-concurrency-and-index-lock-mitigation.md +21 -0
  66. actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--authored-vs-compiled-documentation-boundaries.md +27 -0
  67. actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--ban-file-uri-scheme-in-markdown-links.md +27 -0
  68. actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--bounded-context-budget-and-active-projections.md +35 -0
  69. actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--durable-session-blackboard-and-canonical-cli.md +39 -0
  70. actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--revert-git-stat-cache-workarounds.md +23 -0
  71. actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--subproject-git-path-resolution-under-intent-gate.md +24 -0
  72. actdim_along-4.9.0/docs/decisions/ADR-2026-09-09--error-handling-and-failure-visibility.md +33 -0
  73. actdim_along-4.9.0/docs/decisions/ADR-2026-09-09--kb-search-in-memory-ranking-vs-sqlite-fts5.md +34 -0
  74. actdim_along-4.9.0/docs/decisions/ADR-2026-09-09--untracked-dashboard-artifacts-and-projection-policy.md +33 -0
  75. actdim_along-4.9.0/docs/decisions/ADR-2026-09-09--version-ssot-consolidation-and-dynamic-packaging.md +28 -0
  76. actdim_along-4.9.0/docs/decisions/ADR-2026-09-13--declarative-gate-engine-and-traceability.md +17 -0
  77. actdim_along-4.9.0/docs/decisions/ADR-2026-09-13--runtime-worktree-isolation-and-readiness.md +31 -0
  78. actdim_along-4.9.0/docs/decisions/ADR-2026-09-21--oneliner-installer-bootstrap-over-binary-dist.md +21 -0
  79. actdim_along-4.9.0/docs/decisions/ADR-2026-09-23--telegram-remote-operational-gateway-and-semi-autonomous-mode.md +32 -0
  80. actdim_along-4.9.0/docs/decisions/ADR-2026-09-27--decouple-code-review-graph-from-mcp-to-direct-cli.md +33 -0
  81. actdim_along-4.9.0/docs/decisions/ADR-2026-09-29--opt-in-git-hooks-supersede-zero-git-hooks.md +17 -0
  82. actdim_along-4.9.0/docs/decisions/ADR-2026-09-29--projection-merge-driver-defers-recompile.md +17 -0
  83. actdim_along-4.9.0/docs/decisions/ADR-2026-10-01--agent-session-bindings.md +17 -0
  84. actdim_along-4.9.0/docs/decisions/ADR-2026-10-04--single-vision-hybrid-reconcile.md +17 -0
  85. actdim_along-4.9.0/docs/decisions/ADR-2026-10-05--session-event-ledger-feeds-telemetry.md +17 -0
  86. actdim_along-4.9.0/docs/decisions/ADR-2026-10-06--subproject-boundary-is-git-or-explicit-init.md +17 -0
  87. actdim_along-4.9.0/docs/decisions/ADR-2026-10-07--along-installation-is-state-not-agents-md.md +17 -0
  88. actdim_along-4.9.0/docs/decisions/ADR-2026-10-11--gate-friction-fixes.md +21 -0
  89. actdim_along-4.9.0/docs/decisions/ADR-2026-10-17--docker-isolation-now-gvisor-later.md +17 -0
  90. actdim_along-4.9.0/docs/decisions/ADR-2026-10-17--gates-judge-results-not-commands.md +24 -0
  91. actdim_along-4.9.0/docs/decisions/ADR-2026-10-19--entity-model-slimmed.md +17 -0
  92. actdim_along-4.9.0/docs/decisions/ADR-2026-10-23--along-core-and-modular-extras.md +18 -0
  93. actdim_along-4.9.0/docs/decisions/ADR-2026-10-23--gate-denials-are-ledger-events.md +17 -0
  94. actdim_along-4.9.0/docs/decisions/ADR-2026-10-23--issue-plans-approved-ahead.md +17 -0
  95. actdim_along-4.9.0/docs/decisions/ADR-2026-10-29--along-core-and-dash-extra.md +19 -0
  96. actdim_along-4.9.0/docs/decisions/ADR-2026-11-10--children-allowed-for-cross-context-links-only.md +22 -0
  97. actdim_along-4.9.0/docs/decisions/ADR-2026-11-13--feedback-inbox-and-pr-transport.md +17 -0
  98. actdim_along-4.9.0/docs/decisions/ADR-2026-11-13--issue-test-scoping-policy.md +17 -0
  99. actdim_along-4.9.0/docs/decisions/ADR-2026-11-14--named-orchestration-profiles-and-openobserve-telemetry.md +17 -0
  100. actdim_along-4.9.0/docs/decisions/ADR-2026-11-14--stop-gate-session-attribution-and-trace-denials.md +17 -0
  101. actdim_along-4.9.0/docs/decisions/INDEX.md +81 -0
  102. actdim_along-4.9.0/docs/topic--agent-run-protocol.md +341 -0
  103. actdim_along-4.9.0/docs/topic--architecture.md +512 -0
  104. actdim_along-4.9.0/docs/topic--autonomous-environment.md +282 -0
  105. actdim_along-4.9.0/docs/topic--cli-reference.md +807 -0
  106. actdim_along-4.9.0/docs/topic--declarative-gates-and-traceability.md +228 -0
  107. actdim_along-4.9.0/docs/topic--dependencies.md +72 -0
  108. actdim_along-4.9.0/docs/topic--domain-model.md +383 -0
  109. actdim_along-4.9.0/docs/topic--license.md +39 -0
  110. actdim_along-4.9.0/docs/topic--llm-wiki-architecture.md +351 -0
  111. actdim_along-4.9.0/docs/topic--migrations.md +150 -0
  112. actdim_along-4.9.0/docs/topic--multi-runtime-orchestration.md +277 -0
  113. actdim_along-4.9.0/docs/topic--parallel-sessions.md +122 -0
  114. actdim_along-4.9.0/docs/topic--requirement-format.md +97 -0
  115. actdim_along-4.9.0/docs/topic--runtime-hooks-and-gates.md +391 -0
  116. actdim_along-4.9.0/docs/topic--session-lifecycle.md +123 -0
  117. actdim_along-4.9.0/docs/topic--setup-and-workflow.md +588 -0
  118. actdim_along-4.9.0/docs/topic--skills-reference.md +370 -0
  119. actdim_along-4.9.0/docs/topic--system-comparisons.md +242 -0
  120. actdim_along-4.9.0/docs/topic--troubleshooting.md +144 -0
  121. actdim_along-4.9.0/install.bat +13 -0
  122. actdim_along-4.9.0/install.ps1 +556 -0
  123. actdim_along-4.9.0/install.sh +417 -0
  124. actdim_along-4.9.0/llms-full.txt +5656 -0
  125. actdim_along-4.9.0/llms.txt +51 -0
  126. actdim_along-4.9.0/packages/dashboard-ui/AGENTS.md +35 -0
  127. actdim_along-4.9.0/packages/dashboard-ui/README.md +38 -0
  128. actdim_along-4.9.0/packages/dashboard-ui/docs/INDEX.md +44 -0
  129. actdim_along-4.9.0/packages/dashboard-ui/docs/topic--architecture.md +110 -0
  130. actdim_along-4.9.0/packages/dashboard-ui/docs/topic--dependencies.md +42 -0
  131. actdim_along-4.9.0/packages/dashboard-ui/docs/topic--domain-model.md +85 -0
  132. actdim_along-4.9.0/packages/dashboard-ui/docs/topic--setup-and-workflow.md +77 -0
  133. actdim_along-4.9.0/packages/dashboard-ui/llms-full.txt +379 -0
  134. actdim_along-4.9.0/packages/dashboard-ui/llms.txt +12 -0
  135. actdim_along-4.9.0/pyproject.toml +137 -0
  136. actdim_along-4.9.0/rules/INDEX.md +62 -0
  137. actdim_along-4.9.0/rules/languages/csharp.md +148 -0
  138. actdim_along-4.9.0/rules/languages/javascript.md +68 -0
  139. actdim_along-4.9.0/rules/languages/python.md +129 -0
  140. actdim_along-4.9.0/rules/languages/rust.md +107 -0
  141. actdim_along-4.9.0/rules/languages/typescript.md +119 -0
  142. actdim_along-4.9.0/rules/platforms/backend.md +46 -0
  143. actdim_along-4.9.0/rules/platforms/cli.md +35 -0
  144. actdim_along-4.9.0/rules/platforms/desktop.md +46 -0
  145. actdim_along-4.9.0/rules/platforms/mobile.md +46 -0
  146. actdim_along-4.9.0/rules/platforms/monorepo.md +70 -0
  147. actdim_along-4.9.0/rules/platforms/web.md +56 -0
  148. actdim_along-4.9.0/scripts/along +14 -0
  149. actdim_along-4.9.0/scripts/along.cmd +2 -0
  150. actdim_along-4.9.0/scripts/along.ps1 +1 -0
  151. actdim_along-4.9.0/scripts/along_brief.py +33 -0
  152. actdim_along-4.9.0/scripts/along_commit.py +321 -0
  153. actdim_along-4.9.0/scripts/along_conflict_check.py +55 -0
  154. actdim_along-4.9.0/scripts/along_daemon.py +30 -0
  155. actdim_along-4.9.0/scripts/along_dash.py +75 -0
  156. actdim_along-4.9.0/scripts/along_dep_scan.py +1435 -0
  157. actdim_along-4.9.0/scripts/along_env.py +34 -0
  158. actdim_along-4.9.0/scripts/along_exec.py +460 -0
  159. actdim_along-4.9.0/scripts/along_feedback.py +375 -0
  160. actdim_along-4.9.0/scripts/along_graph_arch.py +360 -0
  161. actdim_along-4.9.0/scripts/along_graph_check.py +208 -0
  162. actdim_along-4.9.0/scripts/along_graph_impact.py +446 -0
  163. actdim_along-4.9.0/scripts/along_graph_sync.py +368 -0
  164. actdim_along-4.9.0/scripts/along_history_sync.py +311 -0
  165. actdim_along-4.9.0/scripts/along_hook.py +492 -0
  166. actdim_along-4.9.0/scripts/along_init.py +376 -0
  167. actdim_along-4.9.0/scripts/along_kb_search.py +929 -0
  168. actdim_along-4.9.0/scripts/along_kb_sync.py +1805 -0
  169. actdim_along-4.9.0/scripts/along_merge_driver.py +43 -0
  170. actdim_along-4.9.0/scripts/along_resolve.py +163 -0
  171. actdim_along-4.9.0/scripts/along_update.py +803 -0
  172. actdim_along-4.9.0/scripts/along_version_bump.py +909 -0
  173. actdim_along-4.9.0/scripts/along_wrap.py +139 -0
  174. actdim_along-4.9.0/scripts/alongkit/__init__.py +91 -0
  175. actdim_along-4.9.0/scripts/alongkit/__main__.py +12 -0
  176. actdim_along-4.9.0/scripts/alongkit/attribution.py +131 -0
  177. actdim_along-4.9.0/scripts/alongkit/bootstrap.py +280 -0
  178. actdim_along-4.9.0/scripts/alongkit/budget.py +505 -0
  179. actdim_along-4.9.0/scripts/alongkit/bypass.py +152 -0
  180. actdim_along-4.9.0/scripts/alongkit/cli.py +84 -0
  181. actdim_along-4.9.0/scripts/alongkit/cliargs.py +50 -0
  182. actdim_along-4.9.0/scripts/alongkit/closeout.py +883 -0
  183. actdim_along-4.9.0/scripts/alongkit/commands/__init__.py +69 -0
  184. actdim_along-4.9.0/scripts/alongkit/commands/brief.py +96 -0
  185. actdim_along-4.9.0/scripts/alongkit/commands/common.py +39 -0
  186. actdim_along-4.9.0/scripts/alongkit/commands/daemon.py +153 -0
  187. actdim_along-4.9.0/scripts/alongkit/commands/decision.py +148 -0
  188. actdim_along-4.9.0/scripts/alongkit/commands/doctor.py +707 -0
  189. actdim_along-4.9.0/scripts/alongkit/commands/env.py +239 -0
  190. actdim_along-4.9.0/scripts/alongkit/commands/gates.py +361 -0
  191. actdim_along-4.9.0/scripts/alongkit/commands/issue.py +874 -0
  192. actdim_along-4.9.0/scripts/alongkit/commands/lifecycle.py +712 -0
  193. actdim_along-4.9.0/scripts/alongkit/commands/milestone.py +222 -0
  194. actdim_along-4.9.0/scripts/alongkit/commands/ops.py +396 -0
  195. actdim_along-4.9.0/scripts/alongkit/commands/orchestrator.py +158 -0
  196. actdim_along-4.9.0/scripts/alongkit/commands/scratch.py +339 -0
  197. actdim_along-4.9.0/scripts/alongkit/commands/session.py +349 -0
  198. actdim_along-4.9.0/scripts/alongkit/commands/telemetry.py +207 -0
  199. actdim_along-4.9.0/scripts/alongkit/commands/worktree.py +199 -0
  200. actdim_along-4.9.0/scripts/alongkit/conflict_check.py +209 -0
  201. actdim_along-4.9.0/scripts/alongkit/daemon.py +1179 -0
  202. actdim_along-4.9.0/scripts/alongkit/devenv.py +106 -0
  203. actdim_along-4.9.0/scripts/alongkit/diagnostics.py +408 -0
  204. actdim_along-4.9.0/scripts/alongkit/distill.py +229 -0
  205. actdim_along-4.9.0/scripts/alongkit/drafts.py +127 -0
  206. actdim_along-4.9.0/scripts/alongkit/entities/__init__.py +212 -0
  207. actdim_along-4.9.0/scripts/alongkit/entities/decisions.py +513 -0
  208. actdim_along-4.9.0/scripts/alongkit/entities/mutation.py +458 -0
  209. actdim_along-4.9.0/scripts/alongkit/entities/projections.py +210 -0
  210. actdim_along-4.9.0/scripts/alongkit/entities/query.py +591 -0
  211. actdim_along-4.9.0/scripts/alongkit/entities/stubs.py +210 -0
  212. actdim_along-4.9.0/scripts/alongkit/entities/validation.py +437 -0
  213. actdim_along-4.9.0/scripts/alongkit/entities/vocabulary.py +233 -0
  214. actdim_along-4.9.0/scripts/alongkit/environment.py +654 -0
  215. actdim_along-4.9.0/scripts/alongkit/exceptions.py +41 -0
  216. actdim_along-4.9.0/scripts/alongkit/feedback_github.py +463 -0
  217. actdim_along-4.9.0/scripts/alongkit/frontmatter.py +401 -0
  218. actdim_along-4.9.0/scripts/alongkit/gates.py +750 -0
  219. actdim_along-4.9.0/scripts/alongkit/gatestats.py +151 -0
  220. actdim_along-4.9.0/scripts/alongkit/gitgates.py +1018 -0
  221. actdim_along-4.9.0/scripts/alongkit/handoff.py +987 -0
  222. actdim_along-4.9.0/scripts/alongkit/hookpreflight.py +129 -0
  223. actdim_along-4.9.0/scripts/alongkit/hooks/__init__.py +52 -0
  224. actdim_along-4.9.0/scripts/alongkit/hooks/adapters/__init__.py +41 -0
  225. actdim_along-4.9.0/scripts/alongkit/hooks/adapters/antigravity.py +132 -0
  226. actdim_along-4.9.0/scripts/alongkit/hooks/adapters/base.py +24 -0
  227. actdim_along-4.9.0/scripts/alongkit/hooks/adapters/claude.py +199 -0
  228. actdim_along-4.9.0/scripts/alongkit/hooks/adapters/codex.py +192 -0
  229. actdim_along-4.9.0/scripts/alongkit/hooks/adapters/generic.py +254 -0
  230. actdim_along-4.9.0/scripts/alongkit/hooks/adapters/normalize.py +88 -0
  231. actdim_along-4.9.0/scripts/alongkit/hooks/adapters/opencode.py +20 -0
  232. actdim_along-4.9.0/scripts/alongkit/hooks/config.py +1045 -0
  233. actdim_along-4.9.0/scripts/alongkit/hooks/containment.py +319 -0
  234. actdim_along-4.9.0/scripts/alongkit/hooks/declarative.py +376 -0
  235. actdim_along-4.9.0/scripts/alongkit/hooks/default_gates.yaml +529 -0
  236. actdim_along-4.9.0/scripts/alongkit/hooks/deletion.py +221 -0
  237. actdim_along-4.9.0/scripts/alongkit/hooks/engine.py +147 -0
  238. actdim_along-4.9.0/scripts/alongkit/hooks/escalation.py +368 -0
  239. actdim_along-4.9.0/scripts/alongkit/hooks/gates.py +175 -0
  240. actdim_along-4.9.0/scripts/alongkit/hooks/models.py +73 -0
  241. actdim_along-4.9.0/scripts/alongkit/hooks/opencode_plugin.js +334 -0
  242. actdim_along-4.9.0/scripts/alongkit/hooks/predicates.py +2762 -0
  243. actdim_along-4.9.0/scripts/alongkit/hooks/shellparse.py +163 -0
  244. actdim_along-4.9.0/scripts/alongkit/hooks/shellwrite.py +302 -0
  245. actdim_along-4.9.0/scripts/alongkit/hooks/traceability.py +231 -0
  246. actdim_along-4.9.0/scripts/alongkit/hooks/turnstate.py +66 -0
  247. actdim_along-4.9.0/scripts/alongkit/install.py +760 -0
  248. actdim_along-4.9.0/scripts/alongkit/kb.py +780 -0
  249. actdim_along-4.9.0/scripts/alongkit/lifecycle.py +1571 -0
  250. actdim_along-4.9.0/scripts/alongkit/markdown.py +352 -0
  251. actdim_along-4.9.0/scripts/alongkit/merge.py +703 -0
  252. actdim_along-4.9.0/scripts/alongkit/migration.py +503 -0
  253. actdim_along-4.9.0/scripts/alongkit/orchestration_profiles.py +312 -0
  254. actdim_along-4.9.0/scripts/alongkit/orchestrator.py +869 -0
  255. actdim_along-4.9.0/scripts/alongkit/patcher.py +189 -0
  256. actdim_along-4.9.0/scripts/alongkit/planscope.py +112 -0
  257. actdim_along-4.9.0/scripts/alongkit/proc.py +371 -0
  258. actdim_along-4.9.0/scripts/alongkit/profiles.py +182 -0
  259. actdim_along-4.9.0/scripts/alongkit/repo.py +779 -0
  260. actdim_along-4.9.0/scripts/alongkit/repochecks.py +420 -0
  261. actdim_along-4.9.0/scripts/alongkit/resolve.py +612 -0
  262. actdim_along-4.9.0/scripts/alongkit/resolve_code.py +462 -0
  263. actdim_along-4.9.0/scripts/alongkit/rules.py +455 -0
  264. actdim_along-4.9.0/scripts/alongkit/runner/__init__.py +52 -0
  265. actdim_along-4.9.0/scripts/alongkit/runner/antigravity.py +192 -0
  266. actdim_along-4.9.0/scripts/alongkit/runner/base.py +475 -0
  267. actdim_along-4.9.0/scripts/alongkit/runner/claude.py +125 -0
  268. actdim_along-4.9.0/scripts/alongkit/runner/codex.py +151 -0
  269. actdim_along-4.9.0/scripts/alongkit/runner/generic.py +88 -0
  270. actdim_along-4.9.0/scripts/alongkit/runner/opencode.py +188 -0
  271. actdim_along-4.9.0/scripts/alongkit/runner/stream.py +199 -0
  272. actdim_along-4.9.0/scripts/alongkit/runtime.py +370 -0
  273. actdim_along-4.9.0/scripts/alongkit/sanitizer.py +375 -0
  274. actdim_along-4.9.0/scripts/alongkit/scaffold.py +490 -0
  275. actdim_along-4.9.0/scripts/alongkit/semver.py +81 -0
  276. actdim_along-4.9.0/scripts/alongkit/session.py +2198 -0
  277. actdim_along-4.9.0/scripts/alongkit/telegram.py +292 -0
  278. actdim_along-4.9.0/scripts/alongkit/telemetry/__init__.py +36 -0
  279. actdim_along-4.9.0/scripts/alongkit/telemetry/conventions.py +91 -0
  280. actdim_along-4.9.0/scripts/alongkit/telemetry/models.py +165 -0
  281. actdim_along-4.9.0/scripts/alongkit/telemetry/offloader.py +115 -0
  282. actdim_along-4.9.0/scripts/alongkit/telemetry/otlp.py +465 -0
  283. actdim_along-4.9.0/scripts/alongkit/telemetry/redactor.py +208 -0
  284. actdim_along-4.9.0/scripts/alongkit/telemetry/spool.py +86 -0
  285. actdim_along-4.9.0/scripts/alongkit/telemetry/tracer.py +447 -0
  286. actdim_along-4.9.0/scripts/alongkit/testruns.py +209 -0
  287. actdim_along-4.9.0/scripts/alongkit/textio.py +168 -0
  288. actdim_along-4.9.0/scripts/alongkit/transaction.py +161 -0
  289. actdim_along-4.9.0/scripts/alongkit/typography.py +156 -0
  290. actdim_along-4.9.0/scripts/alongkit/verify.py +455 -0
  291. actdim_along-4.9.0/scripts/alongkit/version.py +42 -0
  292. actdim_along-4.9.0/scripts/alongkit/worktree.py +711 -0
  293. actdim_along-4.9.0/scripts/bench_kb_search.py +433 -0
  294. actdim_along-4.9.0/scripts/configure_mcp.py +124 -0
  295. actdim_along-4.9.0/scripts/install_manifest.py +191 -0
  296. actdim_along-4.9.0/scripts/migrate_protocol.py +1695 -0
  297. actdim_along-4.9.0/scripts/sanitize_typography.py +127 -0
  298. actdim_along-4.9.0/skills/along-build/SKILL.md +19 -0
  299. actdim_along-4.9.0/skills/along-commit/SKILL.md +37 -0
  300. actdim_along-4.9.0/skills/along-dash/SKILL.md +70 -0
  301. actdim_along-4.9.0/skills/along-decision-sync/SKILL.md +45 -0
  302. actdim_along-4.9.0/skills/along-dep-scan/SKILL.md +44 -0
  303. actdim_along-4.9.0/skills/along-dev/SKILL.md +19 -0
  304. actdim_along-4.9.0/skills/along-feedback/SKILL.md +80 -0
  305. actdim_along-4.9.0/skills/along-graph-arch/SKILL.md +33 -0
  306. actdim_along-4.9.0/skills/along-graph-check/SKILL.md +35 -0
  307. actdim_along-4.9.0/skills/along-graph-impact/SKILL.md +35 -0
  308. actdim_along-4.9.0/skills/along-graph-sync/SKILL.md +24 -0
  309. actdim_along-4.9.0/skills/along-history-sync/SKILL.md +26 -0
  310. actdim_along-4.9.0/skills/along-init/SKILL.md +79 -0
  311. actdim_along-4.9.0/skills/along-init/protocol-reference.md +174 -0
  312. actdim_along-4.9.0/skills/along-init/protocol.md +55 -0
  313. actdim_along-4.9.0/skills/along-issue-sync/SKILL.md +18 -0
  314. actdim_along-4.9.0/skills/along-kb-search/SKILL.md +52 -0
  315. actdim_along-4.9.0/skills/along-kb-sync/SKILL.md +55 -0
  316. actdim_along-4.9.0/skills/along-team/SKILL.md +293 -0
  317. actdim_along-4.9.0/skills/along-test/SKILL.md +53 -0
  318. actdim_along-4.9.0/skills/along-update/SKILL.md +49 -0
  319. actdim_along-4.9.0/skills/along-version-bump/SKILL.md +40 -0
  320. actdim_along-4.9.0/skills/along-wrap/SKILL.md +82 -0
  321. actdim_along-4.9.0/tests/__init__.py +16 -0
  322. actdim_along-4.9.0/tests/_integration.py +28 -0
  323. actdim_along-4.9.0/tests/conftest.py +64 -0
  324. actdim_along-4.9.0/tests/fixtures/runtimes/README.md +46 -0
  325. actdim_along-4.9.0/tests/fixtures/runtimes/claude/2.1.228/help.txt +242 -0
  326. actdim_along-4.9.0/tests/fixtures/runtimes/claude/2.1.228/sample-ok.json +18 -0
  327. actdim_along-4.9.0/tests/fixtures/runtimes/claude/2.1.228/sample-write.json +18 -0
  328. actdim_along-4.9.0/tests/fixtures/runtimes/claude/2.1.228/version.txt +1 -0
  329. actdim_along-4.9.0/tests/fixtures/runtimes/codex/0.158.0/help.txt +112 -0
  330. actdim_along-4.9.0/tests/fixtures/runtimes/codex/0.158.0/sample-ok.jsonl +4 -0
  331. actdim_along-4.9.0/tests/fixtures/runtimes/codex/0.158.0/sample-write.jsonl +7 -0
  332. actdim_along-4.9.0/tests/fixtures/runtimes/codex/0.158.0/version.txt +1 -0
  333. actdim_along-4.9.0/tests/fixtures/runtimes/opencode/1.18.32/help.txt +37 -0
  334. actdim_along-4.9.0/tests/fixtures/runtimes/opencode/1.18.32/sample-ok.jsonl +3 -0
  335. actdim_along-4.9.0/tests/fixtures/runtimes/opencode/1.18.32/sample-write.jsonl +6 -0
  336. actdim_along-4.9.0/tests/fixtures/runtimes/opencode/1.18.32/version.txt +1 -0
  337. actdim_along-4.9.0/tests/hermetic.py +274 -0
  338. actdim_along-4.9.0/tests/test_ai_coauthor_attribution.py +230 -0
  339. actdim_along-4.9.0/tests/test_along_env.py +633 -0
  340. actdim_along-4.9.0/tests/test_along_exec.py +268 -0
  341. actdim_along-4.9.0/tests/test_along_resolve_code.py +291 -0
  342. actdim_along-4.9.0/tests/test_along_resolve_docs.py +282 -0
  343. actdim_along-4.9.0/tests/test_alongkit.py +1012 -0
  344. actdim_along-4.9.0/tests/test_anti_silent_fallback.py +489 -0
  345. actdim_along-4.9.0/tests/test_autonomous_gate_profile.py +839 -0
  346. actdim_along-4.9.0/tests/test_bench_kb_search.py +176 -0
  347. actdim_along-4.9.0/tests/test_bootstrap.py +132 -0
  348. actdim_along-4.9.0/tests/test_bounded_prompt_gate.py +284 -0
  349. actdim_along-4.9.0/tests/test_cli_argparse.py +220 -0
  350. actdim_along-4.9.0/tests/test_cli_chdir.py +98 -0
  351. actdim_along-4.9.0/tests/test_cli_entity_sync.py +130 -0
  352. actdim_along-4.9.0/tests/test_cli_safety_patterns.py +123 -0
  353. actdim_along-4.9.0/tests/test_commit.py +339 -0
  354. actdim_along-4.9.0/tests/test_conflict_marker_gate.py +107 -0
  355. actdim_along-4.9.0/tests/test_context_budget.py +168 -0
  356. actdim_along-4.9.0/tests/test_cross_repo_entities.py +179 -0
  357. actdim_along-4.9.0/tests/test_daemon.py +716 -0
  358. actdim_along-4.9.0/tests/test_declarative_gates.py +400 -0
  359. actdim_along-4.9.0/tests/test_destructive_command.py +160 -0
  360. actdim_along-4.9.0/tests/test_devenv.py +102 -0
  361. actdim_along-4.9.0/tests/test_diagnostics_profiles.py +112 -0
  362. actdim_along-4.9.0/tests/test_diagnostics_untracked.py +216 -0
  363. actdim_along-4.9.0/tests/test_doc_routing_gate.py +318 -0
  364. actdim_along-4.9.0/tests/test_docker_image_integration.py +188 -0
  365. actdim_along-4.9.0/tests/test_docker_scripts.py +384 -0
  366. actdim_along-4.9.0/tests/test_docs.py +96 -0
  367. actdim_along-4.9.0/tests/test_domain_exceptions.py +160 -0
  368. actdim_along-4.9.0/tests/test_entity_lifecycle_cli.py +267 -0
  369. actdim_along-4.9.0/tests/test_entity_reference_integrity.py +615 -0
  370. actdim_along-4.9.0/tests/test_entity_slimming.py +272 -0
  371. actdim_along-4.9.0/tests/test_error_handling_and_io.py +115 -0
  372. actdim_along-4.9.0/tests/test_feedback.py +510 -0
  373. actdim_along-4.9.0/tests/test_gate_friction.py +154 -0
  374. actdim_along-4.9.0/tests/test_gate_profiles.py +146 -0
  375. actdim_along-4.9.0/tests/test_gates_traceability.py +405 -0
  376. actdim_along-4.9.0/tests/test_git_gate_enforcement.py +229 -0
  377. actdim_along-4.9.0/tests/test_graph_skills.py +117 -0
  378. actdim_along-4.9.0/tests/test_handoff_entities.py +649 -0
  379. actdim_along-4.9.0/tests/test_hermetic_snapshot.py +76 -0
  380. actdim_along-4.9.0/tests/test_hook_activation.py +380 -0
  381. actdim_along-4.9.0/tests/test_hooks_audit_scrubbing.py +281 -0
  382. actdim_along-4.9.0/tests/test_hooks_claude.py +435 -0
  383. actdim_along-4.9.0/tests/test_hooks_codex.py +395 -0
  384. actdim_along-4.9.0/tests/test_hooks_core.py +402 -0
  385. actdim_along-4.9.0/tests/test_hooks_generic.py +272 -0
  386. actdim_along-4.9.0/tests/test_hooks_tool_coverage.py +130 -0
  387. actdim_along-4.9.0/tests/test_inquiry_gate.py +291 -0
  388. actdim_along-4.9.0/tests/test_install_marker.py +156 -0
  389. actdim_along-4.9.0/tests/test_installers.py +550 -0
  390. actdim_along-4.9.0/tests/test_integration_registry.py +88 -0
  391. actdim_along-4.9.0/tests/test_issue_drafts.py +214 -0
  392. actdim_along-4.9.0/tests/test_issue_lifecycle.py +739 -0
  393. actdim_along-4.9.0/tests/test_issue_plans.py +363 -0
  394. actdim_along-4.9.0/tests/test_issue_stub_validation.py +305 -0
  395. actdim_along-4.9.0/tests/test_issue_verify_policy.py +297 -0
  396. actdim_along-4.9.0/tests/test_kb_search.py +480 -0
  397. actdim_along-4.9.0/tests/test_kb_sync.py +713 -0
  398. actdim_along-4.9.0/tests/test_lifecycle_hooks.py +231 -0
  399. actdim_along-4.9.0/tests/test_lifecycle_test_evidence.py +357 -0
  400. actdim_along-4.9.0/tests/test_lifecycle_wrap.py +924 -0
  401. actdim_along-4.9.0/tests/test_lint_unstaged.py +179 -0
  402. actdim_along-4.9.0/tests/test_merge_driver.py +418 -0
  403. actdim_along-4.9.0/tests/test_migration.py +635 -0
  404. actdim_along-4.9.0/tests/test_modular_decisions.py +525 -0
  405. actdim_along-4.9.0/tests/test_multi_subproject_find.py +126 -0
  406. actdim_along-4.9.0/tests/test_opencode_runtime.py +228 -0
  407. actdim_along-4.9.0/tests/test_orchestration_profiles.py +115 -0
  408. actdim_along-4.9.0/tests/test_orchestrator.py +706 -0
  409. actdim_along-4.9.0/tests/test_orchestrator_telemetry.py +146 -0
  410. actdim_along-4.9.0/tests/test_output_distillation.py +179 -0
  411. actdim_along-4.9.0/tests/test_parallel_closeout.py +880 -0
  412. actdim_along-4.9.0/tests/test_plan_approve_batch.py +113 -0
  413. actdim_along-4.9.0/tests/test_plan_scope.py +183 -0
  414. actdim_along-4.9.0/tests/test_profiles.py +147 -0
  415. actdim_along-4.9.0/tests/test_progressive_disclosure.py +103 -0
  416. actdim_along-4.9.0/tests/test_projection_autosync.py +90 -0
  417. actdim_along-4.9.0/tests/test_release_ci_check.py +284 -0
  418. actdim_along-4.9.0/tests/test_release_engine.py +449 -0
  419. actdim_along-4.9.0/tests/test_repo_state_gates.py +212 -0
  420. actdim_along-4.9.0/tests/test_rule_pack_protection.py +191 -0
  421. actdim_along-4.9.0/tests/test_rules.py +353 -0
  422. actdim_along-4.9.0/tests/test_runner_antigravity.py +272 -0
  423. actdim_along-4.9.0/tests/test_runtime_adapters.py +632 -0
  424. actdim_along-4.9.0/tests/test_runtime_contracts.py +72 -0
  425. actdim_along-4.9.0/tests/test_runtime_detection.py +170 -0
  426. actdim_along-4.9.0/tests/test_sanitizer.py +353 -0
  427. actdim_along-4.9.0/tests/test_scaffold_init.py +267 -0
  428. actdim_along-4.9.0/tests/test_scaffold_profiles.py +241 -0
  429. actdim_along-4.9.0/tests/test_scan_deps.py +393 -0
  430. actdim_along-4.9.0/tests/test_session_bindings.py +331 -0
  431. actdim_along-4.9.0/tests/test_session_blackboard.py +288 -0
  432. actdim_along-4.9.0/tests/test_session_create.py +102 -0
  433. actdim_along-4.9.0/tests/test_session_records.py +646 -0
  434. actdim_along-4.9.0/tests/test_session_scanner_leak.py +115 -0
  435. actdim_along-4.9.0/tests/test_session_wrap_partial.py +128 -0
  436. actdim_along-4.9.0/tests/test_shell_classification.py +204 -0
  437. actdim_along-4.9.0/tests/test_skills_and_scripts.py +2573 -0
  438. actdim_along-4.9.0/tests/test_start_guard.py +181 -0
  439. actdim_along-4.9.0/tests/test_stream_runner.py +254 -0
  440. actdim_along-4.9.0/tests/test_subagent_denials.py +220 -0
  441. actdim_along-4.9.0/tests/test_subcommand_help.py +157 -0
  442. actdim_along-4.9.0/tests/test_subproject_and_team_gates.py +247 -0
  443. actdim_along-4.9.0/tests/test_subproject_model.py +224 -0
  444. actdim_along-4.9.0/tests/test_system_comparisons.py +102 -0
  445. actdim_along-4.9.0/tests/test_telegram.py +140 -0
  446. actdim_along-4.9.0/tests/test_telemetry_engine.py +429 -0
  447. actdim_along-4.9.0/tests/test_telemetry_models.py +314 -0
  448. actdim_along-4.9.0/tests/test_telemetry_otlp.py +596 -0
  449. actdim_along-4.9.0/tests/test_telemetry_redactor_offloader.py +307 -0
  450. actdim_along-4.9.0/tests/test_test_runner.py +160 -0
  451. actdim_along-4.9.0/tests/test_update_and_hooks_hardening.py +587 -0
  452. actdim_along-4.9.0/tests/test_update_maintenance_friction.py +113 -0
  453. actdim_along-4.9.0/tests/test_verify_policy.py +330 -0
  454. actdim_along-4.9.0/tests/test_version_bump.py +14 -0
  455. actdim_along-4.9.0/tests/test_vision.py +118 -0
  456. actdim_along-4.9.0/tests/test_workspace_containment.py +280 -0
  457. actdim_along-4.9.0/tests/test_worktree.py +703 -0
  458. actdim_along-4.9.0/tests/test_wrap_engine_writes.py +186 -0
  459. actdim_along-4.9.0/tests/test_zz_hermetic_suite.py +240 -0
@@ -0,0 +1,21 @@
1
+ # Repository overrides of the built-in gate catalogue (alongkit/hooks/default_gates.yaml).
2
+ # Repo-owned: `along rules attach` never rewrites this file.
3
+ version: 1
4
+
5
+ gates:
6
+ # AGENTS.md requires an approved plan before source edits and a test run before a turn
7
+ # ends; hold sessions to that even before they are bound to an issue.
8
+ - id: require_plan_approval
9
+ enforce_unbound: true
10
+
11
+ # The suite tests Markdown too (protocol and AGENTS.md budgets, skill manifests), so a
12
+ # documentation edit needs a test run here as well.
13
+ - id: test_before_stop
14
+ enforce_unbound: true
15
+ count_docs: true
16
+ doc_tests:
17
+ - test_context_budget.py
18
+ - test_sanitizer.py
19
+ - test_kb_sync.py
20
+ - test_kb_search.py
21
+ - test_skills_and_scripts.py
@@ -0,0 +1,132 @@
1
+ <!-- managed by along: do not edit. Project guidelines belong in docs/ and AGENTS.md -->
2
+ <!-- template: languages/python.md sha256:99c9bbb4ad79fbe6f594e3932cb762e5d6889e14c4c12cf81546c6f8ed016d77 -->
3
+
4
+ # Python Coding Standards & Best Practices
5
+
6
+ Modern Python 3.11+ engineering conventions based on PEP 8, Google Python Style Guide, UV workspaces, and strict static type analysis.
7
+
8
+ ---
9
+
10
+ ## 1. Monorepos & Workspace Management with UV
11
+
12
+ - **UV Workspaces Standard**:
13
+ - For multi-package or microservice repositories, use `uv` workspaces to orchestrate dependencies centrally in root `pyproject.toml`.
14
+ - Declare workspace members under `[tool.uv.workspace]`. Sub-packages reference sibling packages using editable path dependencies (`{ workspace = true }`).
15
+
16
+ ```toml
17
+ # pyproject.toml (root)
18
+ [tool.uv.workspace]
19
+ members = ["packages/*", "services/*"]
20
+ ```
21
+
22
+ ---
23
+
24
+ ## 2. Static Type Annotations
25
+
26
+ - **Strict Typing**: Type annotate all function arguments and return types. Avoid `Any` where possible.
27
+ - **Modern Syntax**: Use Python 3.10+ union syntax (`X | Y` instead of `Union[X, Y]`, `list[str]` instead of `List[str]`).
28
+ - **Type Checking**: Ensure code passes `mypy --strict` or `pyright` without errors.
29
+
30
+ ```python
31
+ # Recommended: Modern type hints and dataclass
32
+ from dataclasses import dataclass
33
+ from typing import Self
34
+
35
+ @dataclass(frozen=True, slots=True)
36
+ class Coordinate:
37
+ x: float
38
+ y: float
39
+
40
+ @classmethod
41
+ def from_tuple(cls, val: tuple[float, float]) -> Self:
42
+ return cls(x=val[0], y=val[1])
43
+ ```
44
+
45
+ ---
46
+
47
+ ## 3. Data Structures & Immutability
48
+
49
+ - **Dataclasses & Pydantic**: Use `@dataclass(frozen=True, slots=True)` for internal value objects and Pydantic `BaseModel` for external API validation.
50
+ - **Generators & Iterators**: Use generator expressions (`(x for x in data)`) instead of eager list comprehensions for memory-efficient iteration over large streams.
51
+ - **Context Managers**: Always manage I/O resources using `with` statements (`with open(...) as f:`).
52
+
53
+ ---
54
+
55
+ ## 4. Formatting & Linting Tooling
56
+
57
+ - **Ruff & Black**: Use Ruff for ultra-fast linting and Black/Ruff-format for deterministic code formatting.
58
+ - **Line Length**: Target standard 88 or 100 character line limits.
59
+ - **Naming Conventions**:
60
+ - `snake_case`: Variables, functions, methods, modules.
61
+ - `PascalCase`: Classes, Exceptions, Pydantic models.
62
+ - `UPPER_SNAKE_CASE`: Constants.
63
+
64
+ ---
65
+
66
+ ## 5. Error Handling & Exceptions
67
+
68
+ - **Specific Exceptions**: Never catch bare `except:`. Catch specific exceptions (`except (ValueError, KeyError) as e:`).
69
+ - **Custom Exceptions**: Derive domain errors from a custom base exception class (`class DomainError(Exception): pass`).
70
+ - **Exception Chaining**: Use `raise NewException(...) from original_err` to preserve stack traces.
71
+
72
+ ---
73
+
74
+ ## 6. Packaging & Distributing AI Documentation (LLM-Wiki)
75
+
76
+ - **Standard PEP 621 `pyproject.toml` & Package Data**:
77
+ - When publishing Python packages to PyPI or internal registries, configure the build backend to bundle `AGENTS.md`, `llms.txt`, and the `docs/` folder into wheels (`.whl`) and source distributions (`.tar.gz`).
78
+
79
+ ```toml
80
+ # pyproject.toml (Hatchling / Standard PEP 621)
81
+ [build-system]
82
+ requires = ["hatchling"]
83
+ build-backend = "hatchling.build"
84
+
85
+ [project]
86
+ name = "myorg-core"
87
+ version = "1.0.0"
88
+ readme = "README.md"
89
+ keywords = ["along", "ai-agent", "llms", "rules"]
90
+
91
+ [tool.hatch.build.targets.wheel.shared-data]
92
+ "AGENTS.md" = "myorg_core/AGENTS.md"
93
+ "llms.txt" = "myorg_core/llms.txt"
94
+ "docs" = "myorg_core/docs"
95
+ ```
96
+
97
+ - **Setuptools & `MANIFEST.in` (Standard / Vanilla Tooling)**:
98
+ - When using standard `setuptools`, ensure non-code AI files are included in source distributions and wheels:
99
+
100
+ ```ini
101
+ # MANIFEST.in
102
+ include README.md
103
+ include AGENTS.md
104
+ include llms.txt
105
+ recursive-include docs *.md
106
+ ```
107
+
108
+ ```toml
109
+ # pyproject.toml (Setuptools)
110
+ [tool.setuptools.package-data]
111
+ "myorg_core" = ["AGENTS.md", "llms.txt", "docs/**/*.md"]
112
+ ```
113
+
114
+ - **Poetry / Flit (Recommended Alternatives)**:
115
+ - With Poetry or Flit, declare explicit inclusions in `pyproject.toml`:
116
+
117
+ ```toml
118
+ # pyproject.toml (Poetry)
119
+ [tool.poetry]
120
+ name = "myorg-core"
121
+ include = [
122
+ { path = "AGENTS.md" },
123
+ { path = "llms.txt" },
124
+ { path = "docs" }
125
+ ]
126
+ ```
127
+
128
+ - **Consumer & Upward Discovery Protocol**:
129
+ - When downstream projects install the dependency via `pip install`, `uv add`, or `requirements.txt`, files are installed into `.venv/lib/site-packages/<package>/`.
130
+ - The Along dependency scanner (`along-dep-scan`) inspects `pyproject.toml` / `requirements.txt`, resolves the installed package directory in the active virtual environment, detects `AGENTS.md` and `docs/`, and registers them into `docs/topic--dependencies.md`.
131
+
132
+
@@ -0,0 +1,122 @@
1
+ <!-- managed by along: do not edit. Project guidelines belong in docs/ and AGENTS.md -->
2
+ <!-- template: languages/typescript.md sha256:1ee034239cddda035a603f2f0cd17615b61a96ddfdb54047bc1ff42b8826f44d -->
3
+
4
+ # TypeScript Coding Standards & Best Practices
5
+
6
+ Strict TypeScript conventions for production-grade, maintainable codebases and monorepos.
7
+
8
+ ---
9
+
10
+ ## 1. Monorepos & Workspace Dependency Management
11
+
12
+ - **PNPM Workspaces Standard**:
13
+ - In multi-package or multi-platform repositories, use PNPM workspaces (`pnpm-workspace.yaml`) to manage dependencies across packages.
14
+ - Link internal repository packages using the `workspace:*` protocol (e.g. `"@myorg/core": "workspace:*"`). `pnpm publish` automatically resolves and replaces `workspace:*` with exact semver versions when publishing to a registry.
15
+ - Use PNPM Catalogs (`pnpm:catalog:`) in the root `pnpm-workspace.yaml` to enforce uniform external dependency versions (React, TypeScript, Vitest, MSW) across all workspace members without version drift.
16
+
17
+ ```yaml
18
+ # pnpm-workspace.yaml
19
+ packages:
20
+ - "packages/*"
21
+ - "apps/*"
22
+
23
+ catalog:
24
+ typescript: ^5.5.0
25
+ vitest: ^2.0.0
26
+ msw: ^2.4.0
27
+ ```
28
+
29
+ ---
30
+
31
+ ## 2. Strict Typing & Zero `any`
32
+
33
+ - **Compiler Configuration**: Enforce `"strict": true`, `"noImplicitAny": true`, `"strictNullChecks": true`, `"noUncheckedIndexedAccess": true`.
34
+ - **Ban `any`**: Never use `any`. Use `unknown` when the type is truly dynamic, and narrow it using type guards (`typeof`, `instanceof`, custom type predicates).
35
+ - **Explicit Return Types**: All exported functions and API boundaries must declare explicit return types.
36
+
37
+ ```typescript
38
+ // Recommended: Type guard with unknown
39
+ function isApiResponse(data: unknown): data is { success: boolean; data: string } {
40
+ return (
41
+ typeof data === "object" &&
42
+ data !== null &&
43
+ "success" in data &&
44
+ typeof (data as Record<string, unknown>).success === "boolean"
45
+ );
46
+ }
47
+ ```
48
+
49
+ ---
50
+
51
+ ## 3. Types vs Interfaces & Data Modeling
52
+
53
+ - **Interfaces for Object Shapes & Extension**: Use `interface` for object contracts, classes, and public APIs that may be augmented.
54
+ - **Type Aliases for Unions & Utilities**: Use `type` for unions, intersections, primitives, tuples, and mapped types.
55
+ - **Discriminated Unions**: Model domain states using discriminated unions with a common literal discriminator field (e.g. `type` or `status`).
56
+
57
+ ```typescript
58
+ // Recommended: Discriminated union
59
+ type AsyncResult<T> =
60
+ | { status: "idle" }
61
+ | { status: "loading" }
62
+ | { status: "success"; data: T }
63
+ | { status: "error"; error: Error };
64
+ ```
65
+
66
+ ---
67
+
68
+ ## 4. Immutability & Modern Conventions
69
+
70
+ - **Readonly Collections**: Prefer `ReadonlyArray<T>` or `readonly T[]` and `as const` assertions for immutable configuration and lookup tables.
71
+ - **Optional Chaining & Nullish Coalescing**: Prefer `?.` and `??` over verbose logical checks (`&&` or `||`).
72
+ - **Exact Optional Properties**: Explicitly distinguish between `undefined` and missing properties.
73
+
74
+ ---
75
+
76
+ ## 5. Naming & File Organization
77
+
78
+ - **PascalCase**: Classes, Interfaces, Types, Enums, React Components.
79
+ - **camelCase**: Variables, functions, methods, properties.
80
+ - **UPPER_SNAKE_CASE**: Global constants.
81
+ - **kebab-case**: Source filenames (e.g. `user-service.ts`, `auth-guard.ts`).
82
+
83
+ ---
84
+
85
+ ## 6. Package Distribution & AI Metadata (LLM-Wiki)
86
+
87
+ - **Explicit `package.json` `"files"` Whitelist (Standard / Vanilla)**:
88
+ - Avoid relying on `.npmignore` alone. Always explicitly declare the `"files"` array in `package.json` to guarantee that compiled output (`dist`), AI rules (`AGENTS.md`, `llms.txt`), and the `docs/` Wiki are published in npm packages.
89
+
90
+ ```json
91
+ {
92
+ "name": "@myorg/core",
93
+ "version": "1.0.0",
94
+ "main": "./dist/index.cjs",
95
+ "module": "./dist/index.js",
96
+ "types": "./dist/index.d.ts",
97
+ "files": [
98
+ "dist",
99
+ "AGENTS.md",
100
+ "llms.txt",
101
+ "docs",
102
+ "README.md"
103
+ ],
104
+ "keywords": ["along", "ai-agent", "llms", "rules"],
105
+ "ai": {
106
+ "agents": "AGENTS.md",
107
+ "llms": "llms.txt",
108
+ "wiki": "docs"
109
+ }
110
+ }
111
+ ```
112
+
113
+ - **PNPM Workspaces & Monorepo Publishing (Recommended)**:
114
+ - Use `pnpm publish --filter <package>` to publish individual workspace packages.
115
+ - The `workspace:*` protocol automatically translates to exact semantic versions during `pnpm publish`.
116
+ - Place shared root documentation in `docs/` and package-specific architectural articles in `packages/<pkg>/docs/`.
117
+
118
+ - **Consumer & Upward Discovery Protocol**:
119
+ - When consumers install the package (`pnpm add @myorg/core`, `npm i @myorg/core`), package files reside in `node_modules/@myorg/core/`.
120
+ - Along dependency scanner (`along-dep-scan`) inspects `package.json` dependencies, resolves the package in `node_modules/`, identifies `AGENTS.md` and `docs/` (or manifest `"ai"` metadata), and records links in `docs/topic--dependencies.md`.
121
+
122
+
@@ -0,0 +1,59 @@
1
+ <!-- managed by along: do not edit. Project guidelines belong in docs/ and AGENTS.md -->
2
+ <!-- template: platforms/web.md sha256:71bfed6b4ef6fdba63dc3faf510edd4c380f7ed5f51f48ad51b3ab072cad9985 -->
3
+
4
+ # Web Application Engineering Guidelines & Best Practices
5
+
6
+ Strict architectural and engineering standards for browser-based and SSR web applications.
7
+
8
+ ---
9
+
10
+ ## 1. Network & API Layer Architecture
11
+
12
+ 1. **Mock Service Worker (MSW) Standard for REST API Simulation**:
13
+ - Use MSW (`msw`) as the standard for REST API mocking and network interception.
14
+ - **Offline / Serverless Development**: MSW is strongly recommended to allow frontend and UI teams to build, iterate, and test client application logic completely decoupled from a running backend server.
15
+ - **Zero Monkey-Patching**: Do not monkey-patch `window.fetch` or `axios` manually; intercept network traffic at the Service Worker layer in the browser (`setupWorker`) or the native request interceptor layer in Node / Vitest (`setupServer`).
16
+ - **Handler Colocation**: Colocate request handlers by domain or entity in `src/mocks/handlers/` (e.g. `handlers/auth.ts`, `handlers/orders.ts`).
17
+ - **Schema Parity**: Maintain strict schema parity between production OpenAPI/TypeScript API contracts and MSW mock response payloads.
18
+
19
+ 2. **Client-Server State Separation**:
20
+ - Separate Server State (cached API data, query status) from Client State (UI toggles, transient form inputs, modal visibility).
21
+ - Use dedicated cache management (e.g. TanStack Query, SWR, or RTK Query) rather than storing remote API responses in global UI stores (such as Zustand, Redux, or Pinia).
22
+
23
+ 3. **Defensive Network Boundaries**:
24
+ - Validate incoming API payloads at the boundary using schema parsers (e.g. Zod, ArkType, Valibot) before data enters application state.
25
+ - Explicitly handle all 4xx/5xx HTTP statuses and network timeout failures with typed error states.
26
+
27
+ ---
28
+
29
+ ## 2. Rendering, Hydration & Lifecycle
30
+
31
+ 1. **SSR / Client Hydration Safety**:
32
+ - Never access browser globals (`window`, `document`, `localStorage`, `sessionStorage`) during initial render or module evaluation in SSR contexts.
33
+ - Guard client-only logic inside lifecycle hooks (`useEffect`, `onMounted`) or explicit environment checks (`typeof window !== "undefined"`).
34
+
35
+ 2. **Bundle Boundaries & Code Splitting**:
36
+ - Lazy-load heavy non-critical views (routes, administration dashboards, rich text editors, charts) via dynamic imports.
37
+ - Keep common dependency vendors tree-shakeable. Avoid importing monolithic libraries when modular subpath imports are available.
38
+
39
+ ---
40
+
41
+ ## 3. UI Accessibility (A11y) & UX Invariants
42
+
43
+ 1. **Semantic HTML**:
44
+ - Prefer native HTML interactive elements (`<button>`, `<a>`, `<input>`, `<dialog>`) over `div` or `span` with custom click handlers.
45
+ - For custom interactive controls, supply standard ARIA attributes (`role`, `aria-expanded`, `aria-controls`, `aria-label`).
46
+
47
+ 2. **Keyboard Navigation & Focus Management**:
48
+ - Ensure all interactive elements have visible focus states (`:focus-visible`) and are keyboard-reachable (`Tab`, `Enter`, `Escape` for modals).
49
+ - Trap focus inside active modal dialogs and restore focus to trigger elements upon dismissal.
50
+
51
+ ---
52
+
53
+ ## 4. Local Storage & Offline Resilience
54
+
55
+ 1. **Storage Sandboxing**:
56
+ - Wrap `localStorage` / `sessionStorage` in type-safe adapters with fallback mechanisms (e.g. in-memory storage if storage quota is exceeded or in private mode).
57
+ 2. **Optimistic Updates**:
58
+ - Roll back optimistic UI changes cleanly if the underlying API mutation fails. Always display actionable retry prompts.
59
+
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env python3
2
+ # Status: verified
3
+ """
4
+ build.py - Automated Project Build Hook for along repository.
5
+ Builds frontend assets and validates code distribution artifacts.
6
+ """
7
+
8
+ import sys
9
+ import os
10
+ import shutil
11
+ import subprocess
12
+
13
+ def main():
14
+ repo_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
15
+ ui_dir = os.path.join(repo_root, "packages", "dashboard-ui")
16
+
17
+ # If UI package exists, compile via pnpm if available
18
+ if os.path.exists(ui_dir):
19
+ pnpm = shutil.which("pnpm")
20
+ if pnpm:
21
+ print("-> Building dashboard UI via pnpm...")
22
+ res = subprocess.run([pnpm, "--filter", "@along/dashboard-ui", "build"], cwd=repo_root)
23
+ if res.returncode != 0:
24
+ sys.exit(res.returncode)
25
+
26
+ print("-> Build verification completed successfully.")
27
+ sys.exit(0)
28
+
29
+ if __name__ == "__main__":
30
+ main()
@@ -0,0 +1,80 @@
1
+ # /// script
2
+ # requires-python = ">=3.10"
3
+ # dependencies = [
4
+ # "fastapi>=0.110.0",
5
+ # "uvicorn>=0.28.0",
6
+ # "pydantic>=2.0.0",
7
+ # "pyyaml>=6.0.0",
8
+ # "rich>=13.0.0",
9
+ # ]
10
+ # ///
11
+
12
+ """
13
+ Along Development Runner (.along/scripts/dev.py).
14
+ Launches the full dev environment with Vite HMR frontend (port 5173) and live FastAPI backend (port 8765).
15
+ """
16
+
17
+ import os
18
+ import shutil
19
+ import subprocess
20
+ import sys
21
+ from pathlib import Path
22
+
23
+ # Auto-bootstrap with `uv run` if dependencies are not available in current interpreter
24
+ if "--no-uv-reentry" not in sys.argv:
25
+ try:
26
+ import fastapi
27
+ import uvicorn
28
+ import pydantic
29
+ except ImportError:
30
+ uv_bin = shutil.which("uv")
31
+ if uv_bin:
32
+ cmd = [uv_bin, "run", str(Path(__file__).resolve())] + sys.argv[1:] + ["--no-uv-reentry"]
33
+ try:
34
+ sys.exit(subprocess.call(cmd))
35
+ except KeyboardInterrupt:
36
+ sys.exit(0)
37
+ else:
38
+ print(
39
+ "[Error] Missing dependencies (fastapi, uvicorn, pydantic).\n"
40
+ "Run with uv (recommended):\n"
41
+ " uv run .along/scripts/dev.py\n"
42
+ "Or install the required packages:\n"
43
+ " python -m pip install fastapi uvicorn pydantic pyyaml rich",
44
+ file=sys.stderr,
45
+ )
46
+ sys.exit(2)
47
+
48
+ if "--no-uv-reentry" in sys.argv:
49
+ sys.argv.remove("--no-uv-reentry")
50
+
51
+ # Add repo root and scripts/ to sys.path
52
+ repo_root = Path(__file__).resolve().parent.parent.parent
53
+ if str(repo_root) not in sys.path:
54
+ sys.path.insert(0, str(repo_root))
55
+
56
+ scripts_dir = repo_root / "scripts"
57
+ if str(scripts_dir) not in sys.path:
58
+ sys.path.insert(0, str(scripts_dir))
59
+
60
+ from alongkit import bootstrap
61
+ bootstrap.ensure_deps()
62
+
63
+ from dashboard.app import main
64
+
65
+ if __name__ == "__main__":
66
+ if any(a in ("--setup-env", "--env-setup") for a in sys.argv):
67
+ from alongkit import devenv
68
+ reinstall = "--reinstall" in sys.argv
69
+ ok, msg = devenv.setup_dev_environment(str(repo_root), reinstall=reinstall)
70
+ if not ok:
71
+ print(f"[Error] Dev environment setup failed: {msg}", file=sys.stderr)
72
+ sys.exit(1)
73
+ print(f"-> {msg}")
74
+ sys.exit(0)
75
+
76
+ # Default to dev mode if no explicit mode arguments passed
77
+ if len(sys.argv) == 1 or (len(sys.argv) == 2 and sys.argv[1] not in ("-w", "--web", "-c", "--cli", "--export")):
78
+ sys.argv.append("--dev")
79
+ main()
80
+