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.
- actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/rules/gates.yaml +21 -0
- actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/rules/languages/python.md +132 -0
- actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/rules/languages/typescript.md +122 -0
- actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/rules/platforms/web.md +59 -0
- actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/scripts/build.py +30 -0
- actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/scripts/dev.py +80 -0
- actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/scripts/test.py +352 -0
- actdim_along-4.9.0/.along/rules/gates.yaml +21 -0
- actdim_along-4.9.0/.along/rules/languages/python.md +132 -0
- actdim_along-4.9.0/.along/rules/languages/typescript.md +122 -0
- actdim_along-4.9.0/.along/rules/platforms/web.md +59 -0
- actdim_along-4.9.0/.along/scripts/build.py +30 -0
- actdim_along-4.9.0/.along/scripts/dev.py +80 -0
- actdim_along-4.9.0/.along/scripts/test.py +352 -0
- actdim_along-4.9.0/.archive/README.md +5 -0
- actdim_along-4.9.0/.gitignore +65 -0
- actdim_along-4.9.0/AGENTS.md +65 -0
- actdim_along-4.9.0/LICENSE +21 -0
- actdim_along-4.9.0/PKG-INFO +289 -0
- actdim_along-4.9.0/README.md +240 -0
- actdim_along-4.9.0/config/along-config.example.json +26 -0
- actdim_along-4.9.0/dashboard/__init__.py +16 -0
- actdim_along-4.9.0/dashboard/api/__init__.py +8 -0
- actdim_along-4.9.0/dashboard/api/entities_api.py +81 -0
- actdim_along-4.9.0/dashboard/api/events_api.py +22 -0
- actdim_along-4.9.0/dashboard/api/kb_api.py +59 -0
- actdim_along-4.9.0/dashboard/api/metrics_api.py +31 -0
- actdim_along-4.9.0/dashboard/api/router.py +15 -0
- actdim_along-4.9.0/dashboard/app.py +306 -0
- actdim_along-4.9.0/dashboard/core/collector.py +524 -0
- actdim_along-4.9.0/dashboard/core/graph.py +347 -0
- actdim_along-4.9.0/dashboard/core/kb_engine.py +209 -0
- actdim_along-4.9.0/dashboard/core/watcher.py +61 -0
- actdim_along-4.9.0/dashboard/schemas/__init__.py +50 -0
- actdim_along-4.9.0/dashboard/schemas/entities.py +118 -0
- actdim_along-4.9.0/dashboard/schemas/kb.py +46 -0
- actdim_along-4.9.0/dashboard/schemas/metrics.py +71 -0
- actdim_along-4.9.0/dashboard/schemas/search.py +21 -0
- actdim_along-4.9.0/docs/INDEX.md +120 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-15--single-file-append-only-decisions.md +19 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-26--code-graph-mcp-and-hybrid-kb-search.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-26--protocol-v120-knowledge-base-architecture.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--along-v200-rebranding-and-namespace-isolation.md +21 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--autonomous-multi-mode-dashboard-and-analytics-engine.md +19 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--entity-relationships-unidirectional-graph-and-canonical-slugs.md +20 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--mandatory-code-review-and-blast-radius-impact-gate.md +20 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--protocol-v150-automated-entities-and-intent-heuristics.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--unified-along-wrap-commit-and-lifecycle-runners.md +20 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-27--universal-version-bumping-and-scripts-ecosystem.md +21 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-28--frontend-dynstruct-architecture-and-msgmesh-adapters.md +24 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-30--llm-wiki-docs-architecture-and-singular-skills-refactoring.md +33 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-30--multi-agent-protocol-along-team-and-goal-integration.md +32 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-31--concurrency-projections-and-context-deprecation.md +25 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-31--global-self-diagnostics-and-feedback-subsystem.md +16 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-08-31--session-scoped-blackboard-memory-and-role-contracts.md +36 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--frontmatter-on-ruamel-yaml.md +21 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--installers-never-delete-what-they-did-not-write.md +22 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--migration-never-deletes-a-destination.md +22 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--release-gates-before-mutations.md +22 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--requirement-traceability-and-public-surface-gate.md +19 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--shared-engine-package.md +21 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-01--typography-rule-scope.md +22 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-06--engineering-provenance-and-dual-track-artifact-loop.md +31 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-06--provider-agnostic-subagent-abstraction.md +20 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-06--windows-git-concurrency-and-index-lock-mitigation.md +21 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--authored-vs-compiled-documentation-boundaries.md +27 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--ban-file-uri-scheme-in-markdown-links.md +27 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--bounded-context-budget-and-active-projections.md +35 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--durable-session-blackboard-and-canonical-cli.md +39 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--revert-git-stat-cache-workarounds.md +23 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-07--subproject-git-path-resolution-under-intent-gate.md +24 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-09--error-handling-and-failure-visibility.md +33 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-09--kb-search-in-memory-ranking-vs-sqlite-fts5.md +34 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-09--untracked-dashboard-artifacts-and-projection-policy.md +33 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-09--version-ssot-consolidation-and-dynamic-packaging.md +28 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-13--declarative-gate-engine-and-traceability.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-13--runtime-worktree-isolation-and-readiness.md +31 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-21--oneliner-installer-bootstrap-over-binary-dist.md +21 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-23--telegram-remote-operational-gateway-and-semi-autonomous-mode.md +32 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-27--decouple-code-review-graph-from-mcp-to-direct-cli.md +33 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-29--opt-in-git-hooks-supersede-zero-git-hooks.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-09-29--projection-merge-driver-defers-recompile.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-01--agent-session-bindings.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-04--single-vision-hybrid-reconcile.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-05--session-event-ledger-feeds-telemetry.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-06--subproject-boundary-is-git-or-explicit-init.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-07--along-installation-is-state-not-agents-md.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-11--gate-friction-fixes.md +21 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-17--docker-isolation-now-gvisor-later.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-17--gates-judge-results-not-commands.md +24 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-19--entity-model-slimmed.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-23--along-core-and-modular-extras.md +18 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-23--gate-denials-are-ledger-events.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-23--issue-plans-approved-ahead.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-10-29--along-core-and-dash-extra.md +19 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-11-10--children-allowed-for-cross-context-links-only.md +22 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-11-13--feedback-inbox-and-pr-transport.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-11-13--issue-test-scoping-policy.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-11-14--named-orchestration-profiles-and-openobserve-telemetry.md +17 -0
- actdim_along-4.9.0/docs/decisions/ADR-2026-11-14--stop-gate-session-attribution-and-trace-denials.md +17 -0
- actdim_along-4.9.0/docs/decisions/INDEX.md +81 -0
- actdim_along-4.9.0/docs/topic--agent-run-protocol.md +341 -0
- actdim_along-4.9.0/docs/topic--architecture.md +512 -0
- actdim_along-4.9.0/docs/topic--autonomous-environment.md +282 -0
- actdim_along-4.9.0/docs/topic--cli-reference.md +807 -0
- actdim_along-4.9.0/docs/topic--declarative-gates-and-traceability.md +228 -0
- actdim_along-4.9.0/docs/topic--dependencies.md +72 -0
- actdim_along-4.9.0/docs/topic--domain-model.md +383 -0
- actdim_along-4.9.0/docs/topic--license.md +39 -0
- actdim_along-4.9.0/docs/topic--llm-wiki-architecture.md +351 -0
- actdim_along-4.9.0/docs/topic--migrations.md +150 -0
- actdim_along-4.9.0/docs/topic--multi-runtime-orchestration.md +277 -0
- actdim_along-4.9.0/docs/topic--parallel-sessions.md +122 -0
- actdim_along-4.9.0/docs/topic--requirement-format.md +97 -0
- actdim_along-4.9.0/docs/topic--runtime-hooks-and-gates.md +391 -0
- actdim_along-4.9.0/docs/topic--session-lifecycle.md +123 -0
- actdim_along-4.9.0/docs/topic--setup-and-workflow.md +588 -0
- actdim_along-4.9.0/docs/topic--skills-reference.md +370 -0
- actdim_along-4.9.0/docs/topic--system-comparisons.md +242 -0
- actdim_along-4.9.0/docs/topic--troubleshooting.md +144 -0
- actdim_along-4.9.0/install.bat +13 -0
- actdim_along-4.9.0/install.ps1 +556 -0
- actdim_along-4.9.0/install.sh +417 -0
- actdim_along-4.9.0/llms-full.txt +5656 -0
- actdim_along-4.9.0/llms.txt +51 -0
- actdim_along-4.9.0/packages/dashboard-ui/AGENTS.md +35 -0
- actdim_along-4.9.0/packages/dashboard-ui/README.md +38 -0
- actdim_along-4.9.0/packages/dashboard-ui/docs/INDEX.md +44 -0
- actdim_along-4.9.0/packages/dashboard-ui/docs/topic--architecture.md +110 -0
- actdim_along-4.9.0/packages/dashboard-ui/docs/topic--dependencies.md +42 -0
- actdim_along-4.9.0/packages/dashboard-ui/docs/topic--domain-model.md +85 -0
- actdim_along-4.9.0/packages/dashboard-ui/docs/topic--setup-and-workflow.md +77 -0
- actdim_along-4.9.0/packages/dashboard-ui/llms-full.txt +379 -0
- actdim_along-4.9.0/packages/dashboard-ui/llms.txt +12 -0
- actdim_along-4.9.0/pyproject.toml +137 -0
- actdim_along-4.9.0/rules/INDEX.md +62 -0
- actdim_along-4.9.0/rules/languages/csharp.md +148 -0
- actdim_along-4.9.0/rules/languages/javascript.md +68 -0
- actdim_along-4.9.0/rules/languages/python.md +129 -0
- actdim_along-4.9.0/rules/languages/rust.md +107 -0
- actdim_along-4.9.0/rules/languages/typescript.md +119 -0
- actdim_along-4.9.0/rules/platforms/backend.md +46 -0
- actdim_along-4.9.0/rules/platforms/cli.md +35 -0
- actdim_along-4.9.0/rules/platforms/desktop.md +46 -0
- actdim_along-4.9.0/rules/platforms/mobile.md +46 -0
- actdim_along-4.9.0/rules/platforms/monorepo.md +70 -0
- actdim_along-4.9.0/rules/platforms/web.md +56 -0
- actdim_along-4.9.0/scripts/along +14 -0
- actdim_along-4.9.0/scripts/along.cmd +2 -0
- actdim_along-4.9.0/scripts/along.ps1 +1 -0
- actdim_along-4.9.0/scripts/along_brief.py +33 -0
- actdim_along-4.9.0/scripts/along_commit.py +321 -0
- actdim_along-4.9.0/scripts/along_conflict_check.py +55 -0
- actdim_along-4.9.0/scripts/along_daemon.py +30 -0
- actdim_along-4.9.0/scripts/along_dash.py +75 -0
- actdim_along-4.9.0/scripts/along_dep_scan.py +1435 -0
- actdim_along-4.9.0/scripts/along_env.py +34 -0
- actdim_along-4.9.0/scripts/along_exec.py +460 -0
- actdim_along-4.9.0/scripts/along_feedback.py +375 -0
- actdim_along-4.9.0/scripts/along_graph_arch.py +360 -0
- actdim_along-4.9.0/scripts/along_graph_check.py +208 -0
- actdim_along-4.9.0/scripts/along_graph_impact.py +446 -0
- actdim_along-4.9.0/scripts/along_graph_sync.py +368 -0
- actdim_along-4.9.0/scripts/along_history_sync.py +311 -0
- actdim_along-4.9.0/scripts/along_hook.py +492 -0
- actdim_along-4.9.0/scripts/along_init.py +376 -0
- actdim_along-4.9.0/scripts/along_kb_search.py +929 -0
- actdim_along-4.9.0/scripts/along_kb_sync.py +1805 -0
- actdim_along-4.9.0/scripts/along_merge_driver.py +43 -0
- actdim_along-4.9.0/scripts/along_resolve.py +163 -0
- actdim_along-4.9.0/scripts/along_update.py +803 -0
- actdim_along-4.9.0/scripts/along_version_bump.py +909 -0
- actdim_along-4.9.0/scripts/along_wrap.py +139 -0
- actdim_along-4.9.0/scripts/alongkit/__init__.py +91 -0
- actdim_along-4.9.0/scripts/alongkit/__main__.py +12 -0
- actdim_along-4.9.0/scripts/alongkit/attribution.py +131 -0
- actdim_along-4.9.0/scripts/alongkit/bootstrap.py +280 -0
- actdim_along-4.9.0/scripts/alongkit/budget.py +505 -0
- actdim_along-4.9.0/scripts/alongkit/bypass.py +152 -0
- actdim_along-4.9.0/scripts/alongkit/cli.py +84 -0
- actdim_along-4.9.0/scripts/alongkit/cliargs.py +50 -0
- actdim_along-4.9.0/scripts/alongkit/closeout.py +883 -0
- actdim_along-4.9.0/scripts/alongkit/commands/__init__.py +69 -0
- actdim_along-4.9.0/scripts/alongkit/commands/brief.py +96 -0
- actdim_along-4.9.0/scripts/alongkit/commands/common.py +39 -0
- actdim_along-4.9.0/scripts/alongkit/commands/daemon.py +153 -0
- actdim_along-4.9.0/scripts/alongkit/commands/decision.py +148 -0
- actdim_along-4.9.0/scripts/alongkit/commands/doctor.py +707 -0
- actdim_along-4.9.0/scripts/alongkit/commands/env.py +239 -0
- actdim_along-4.9.0/scripts/alongkit/commands/gates.py +361 -0
- actdim_along-4.9.0/scripts/alongkit/commands/issue.py +874 -0
- actdim_along-4.9.0/scripts/alongkit/commands/lifecycle.py +712 -0
- actdim_along-4.9.0/scripts/alongkit/commands/milestone.py +222 -0
- actdim_along-4.9.0/scripts/alongkit/commands/ops.py +396 -0
- actdim_along-4.9.0/scripts/alongkit/commands/orchestrator.py +158 -0
- actdim_along-4.9.0/scripts/alongkit/commands/scratch.py +339 -0
- actdim_along-4.9.0/scripts/alongkit/commands/session.py +349 -0
- actdim_along-4.9.0/scripts/alongkit/commands/telemetry.py +207 -0
- actdim_along-4.9.0/scripts/alongkit/commands/worktree.py +199 -0
- actdim_along-4.9.0/scripts/alongkit/conflict_check.py +209 -0
- actdim_along-4.9.0/scripts/alongkit/daemon.py +1179 -0
- actdim_along-4.9.0/scripts/alongkit/devenv.py +106 -0
- actdim_along-4.9.0/scripts/alongkit/diagnostics.py +408 -0
- actdim_along-4.9.0/scripts/alongkit/distill.py +229 -0
- actdim_along-4.9.0/scripts/alongkit/drafts.py +127 -0
- actdim_along-4.9.0/scripts/alongkit/entities/__init__.py +212 -0
- actdim_along-4.9.0/scripts/alongkit/entities/decisions.py +513 -0
- actdim_along-4.9.0/scripts/alongkit/entities/mutation.py +458 -0
- actdim_along-4.9.0/scripts/alongkit/entities/projections.py +210 -0
- actdim_along-4.9.0/scripts/alongkit/entities/query.py +591 -0
- actdim_along-4.9.0/scripts/alongkit/entities/stubs.py +210 -0
- actdim_along-4.9.0/scripts/alongkit/entities/validation.py +437 -0
- actdim_along-4.9.0/scripts/alongkit/entities/vocabulary.py +233 -0
- actdim_along-4.9.0/scripts/alongkit/environment.py +654 -0
- actdim_along-4.9.0/scripts/alongkit/exceptions.py +41 -0
- actdim_along-4.9.0/scripts/alongkit/feedback_github.py +463 -0
- actdim_along-4.9.0/scripts/alongkit/frontmatter.py +401 -0
- actdim_along-4.9.0/scripts/alongkit/gates.py +750 -0
- actdim_along-4.9.0/scripts/alongkit/gatestats.py +151 -0
- actdim_along-4.9.0/scripts/alongkit/gitgates.py +1018 -0
- actdim_along-4.9.0/scripts/alongkit/handoff.py +987 -0
- actdim_along-4.9.0/scripts/alongkit/hookpreflight.py +129 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/__init__.py +52 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/adapters/__init__.py +41 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/adapters/antigravity.py +132 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/adapters/base.py +24 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/adapters/claude.py +199 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/adapters/codex.py +192 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/adapters/generic.py +254 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/adapters/normalize.py +88 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/adapters/opencode.py +20 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/config.py +1045 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/containment.py +319 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/declarative.py +376 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/default_gates.yaml +529 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/deletion.py +221 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/engine.py +147 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/escalation.py +368 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/gates.py +175 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/models.py +73 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/opencode_plugin.js +334 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/predicates.py +2762 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/shellparse.py +163 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/shellwrite.py +302 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/traceability.py +231 -0
- actdim_along-4.9.0/scripts/alongkit/hooks/turnstate.py +66 -0
- actdim_along-4.9.0/scripts/alongkit/install.py +760 -0
- actdim_along-4.9.0/scripts/alongkit/kb.py +780 -0
- actdim_along-4.9.0/scripts/alongkit/lifecycle.py +1571 -0
- actdim_along-4.9.0/scripts/alongkit/markdown.py +352 -0
- actdim_along-4.9.0/scripts/alongkit/merge.py +703 -0
- actdim_along-4.9.0/scripts/alongkit/migration.py +503 -0
- actdim_along-4.9.0/scripts/alongkit/orchestration_profiles.py +312 -0
- actdim_along-4.9.0/scripts/alongkit/orchestrator.py +869 -0
- actdim_along-4.9.0/scripts/alongkit/patcher.py +189 -0
- actdim_along-4.9.0/scripts/alongkit/planscope.py +112 -0
- actdim_along-4.9.0/scripts/alongkit/proc.py +371 -0
- actdim_along-4.9.0/scripts/alongkit/profiles.py +182 -0
- actdim_along-4.9.0/scripts/alongkit/repo.py +779 -0
- actdim_along-4.9.0/scripts/alongkit/repochecks.py +420 -0
- actdim_along-4.9.0/scripts/alongkit/resolve.py +612 -0
- actdim_along-4.9.0/scripts/alongkit/resolve_code.py +462 -0
- actdim_along-4.9.0/scripts/alongkit/rules.py +455 -0
- actdim_along-4.9.0/scripts/alongkit/runner/__init__.py +52 -0
- actdim_along-4.9.0/scripts/alongkit/runner/antigravity.py +192 -0
- actdim_along-4.9.0/scripts/alongkit/runner/base.py +475 -0
- actdim_along-4.9.0/scripts/alongkit/runner/claude.py +125 -0
- actdim_along-4.9.0/scripts/alongkit/runner/codex.py +151 -0
- actdim_along-4.9.0/scripts/alongkit/runner/generic.py +88 -0
- actdim_along-4.9.0/scripts/alongkit/runner/opencode.py +188 -0
- actdim_along-4.9.0/scripts/alongkit/runner/stream.py +199 -0
- actdim_along-4.9.0/scripts/alongkit/runtime.py +370 -0
- actdim_along-4.9.0/scripts/alongkit/sanitizer.py +375 -0
- actdim_along-4.9.0/scripts/alongkit/scaffold.py +490 -0
- actdim_along-4.9.0/scripts/alongkit/semver.py +81 -0
- actdim_along-4.9.0/scripts/alongkit/session.py +2198 -0
- actdim_along-4.9.0/scripts/alongkit/telegram.py +292 -0
- actdim_along-4.9.0/scripts/alongkit/telemetry/__init__.py +36 -0
- actdim_along-4.9.0/scripts/alongkit/telemetry/conventions.py +91 -0
- actdim_along-4.9.0/scripts/alongkit/telemetry/models.py +165 -0
- actdim_along-4.9.0/scripts/alongkit/telemetry/offloader.py +115 -0
- actdim_along-4.9.0/scripts/alongkit/telemetry/otlp.py +465 -0
- actdim_along-4.9.0/scripts/alongkit/telemetry/redactor.py +208 -0
- actdim_along-4.9.0/scripts/alongkit/telemetry/spool.py +86 -0
- actdim_along-4.9.0/scripts/alongkit/telemetry/tracer.py +447 -0
- actdim_along-4.9.0/scripts/alongkit/testruns.py +209 -0
- actdim_along-4.9.0/scripts/alongkit/textio.py +168 -0
- actdim_along-4.9.0/scripts/alongkit/transaction.py +161 -0
- actdim_along-4.9.0/scripts/alongkit/typography.py +156 -0
- actdim_along-4.9.0/scripts/alongkit/verify.py +455 -0
- actdim_along-4.9.0/scripts/alongkit/version.py +42 -0
- actdim_along-4.9.0/scripts/alongkit/worktree.py +711 -0
- actdim_along-4.9.0/scripts/bench_kb_search.py +433 -0
- actdim_along-4.9.0/scripts/configure_mcp.py +124 -0
- actdim_along-4.9.0/scripts/install_manifest.py +191 -0
- actdim_along-4.9.0/scripts/migrate_protocol.py +1695 -0
- actdim_along-4.9.0/scripts/sanitize_typography.py +127 -0
- actdim_along-4.9.0/skills/along-build/SKILL.md +19 -0
- actdim_along-4.9.0/skills/along-commit/SKILL.md +37 -0
- actdim_along-4.9.0/skills/along-dash/SKILL.md +70 -0
- actdim_along-4.9.0/skills/along-decision-sync/SKILL.md +45 -0
- actdim_along-4.9.0/skills/along-dep-scan/SKILL.md +44 -0
- actdim_along-4.9.0/skills/along-dev/SKILL.md +19 -0
- actdim_along-4.9.0/skills/along-feedback/SKILL.md +80 -0
- actdim_along-4.9.0/skills/along-graph-arch/SKILL.md +33 -0
- actdim_along-4.9.0/skills/along-graph-check/SKILL.md +35 -0
- actdim_along-4.9.0/skills/along-graph-impact/SKILL.md +35 -0
- actdim_along-4.9.0/skills/along-graph-sync/SKILL.md +24 -0
- actdim_along-4.9.0/skills/along-history-sync/SKILL.md +26 -0
- actdim_along-4.9.0/skills/along-init/SKILL.md +79 -0
- actdim_along-4.9.0/skills/along-init/protocol-reference.md +174 -0
- actdim_along-4.9.0/skills/along-init/protocol.md +55 -0
- actdim_along-4.9.0/skills/along-issue-sync/SKILL.md +18 -0
- actdim_along-4.9.0/skills/along-kb-search/SKILL.md +52 -0
- actdim_along-4.9.0/skills/along-kb-sync/SKILL.md +55 -0
- actdim_along-4.9.0/skills/along-team/SKILL.md +293 -0
- actdim_along-4.9.0/skills/along-test/SKILL.md +53 -0
- actdim_along-4.9.0/skills/along-update/SKILL.md +49 -0
- actdim_along-4.9.0/skills/along-version-bump/SKILL.md +40 -0
- actdim_along-4.9.0/skills/along-wrap/SKILL.md +82 -0
- actdim_along-4.9.0/tests/__init__.py +16 -0
- actdim_along-4.9.0/tests/_integration.py +28 -0
- actdim_along-4.9.0/tests/conftest.py +64 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/README.md +46 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/claude/2.1.228/help.txt +242 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/claude/2.1.228/sample-ok.json +18 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/claude/2.1.228/sample-write.json +18 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/claude/2.1.228/version.txt +1 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/codex/0.158.0/help.txt +112 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/codex/0.158.0/sample-ok.jsonl +4 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/codex/0.158.0/sample-write.jsonl +7 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/codex/0.158.0/version.txt +1 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/opencode/1.18.32/help.txt +37 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/opencode/1.18.32/sample-ok.jsonl +3 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/opencode/1.18.32/sample-write.jsonl +6 -0
- actdim_along-4.9.0/tests/fixtures/runtimes/opencode/1.18.32/version.txt +1 -0
- actdim_along-4.9.0/tests/hermetic.py +274 -0
- actdim_along-4.9.0/tests/test_ai_coauthor_attribution.py +230 -0
- actdim_along-4.9.0/tests/test_along_env.py +633 -0
- actdim_along-4.9.0/tests/test_along_exec.py +268 -0
- actdim_along-4.9.0/tests/test_along_resolve_code.py +291 -0
- actdim_along-4.9.0/tests/test_along_resolve_docs.py +282 -0
- actdim_along-4.9.0/tests/test_alongkit.py +1012 -0
- actdim_along-4.9.0/tests/test_anti_silent_fallback.py +489 -0
- actdim_along-4.9.0/tests/test_autonomous_gate_profile.py +839 -0
- actdim_along-4.9.0/tests/test_bench_kb_search.py +176 -0
- actdim_along-4.9.0/tests/test_bootstrap.py +132 -0
- actdim_along-4.9.0/tests/test_bounded_prompt_gate.py +284 -0
- actdim_along-4.9.0/tests/test_cli_argparse.py +220 -0
- actdim_along-4.9.0/tests/test_cli_chdir.py +98 -0
- actdim_along-4.9.0/tests/test_cli_entity_sync.py +130 -0
- actdim_along-4.9.0/tests/test_cli_safety_patterns.py +123 -0
- actdim_along-4.9.0/tests/test_commit.py +339 -0
- actdim_along-4.9.0/tests/test_conflict_marker_gate.py +107 -0
- actdim_along-4.9.0/tests/test_context_budget.py +168 -0
- actdim_along-4.9.0/tests/test_cross_repo_entities.py +179 -0
- actdim_along-4.9.0/tests/test_daemon.py +716 -0
- actdim_along-4.9.0/tests/test_declarative_gates.py +400 -0
- actdim_along-4.9.0/tests/test_destructive_command.py +160 -0
- actdim_along-4.9.0/tests/test_devenv.py +102 -0
- actdim_along-4.9.0/tests/test_diagnostics_profiles.py +112 -0
- actdim_along-4.9.0/tests/test_diagnostics_untracked.py +216 -0
- actdim_along-4.9.0/tests/test_doc_routing_gate.py +318 -0
- actdim_along-4.9.0/tests/test_docker_image_integration.py +188 -0
- actdim_along-4.9.0/tests/test_docker_scripts.py +384 -0
- actdim_along-4.9.0/tests/test_docs.py +96 -0
- actdim_along-4.9.0/tests/test_domain_exceptions.py +160 -0
- actdim_along-4.9.0/tests/test_entity_lifecycle_cli.py +267 -0
- actdim_along-4.9.0/tests/test_entity_reference_integrity.py +615 -0
- actdim_along-4.9.0/tests/test_entity_slimming.py +272 -0
- actdim_along-4.9.0/tests/test_error_handling_and_io.py +115 -0
- actdim_along-4.9.0/tests/test_feedback.py +510 -0
- actdim_along-4.9.0/tests/test_gate_friction.py +154 -0
- actdim_along-4.9.0/tests/test_gate_profiles.py +146 -0
- actdim_along-4.9.0/tests/test_gates_traceability.py +405 -0
- actdim_along-4.9.0/tests/test_git_gate_enforcement.py +229 -0
- actdim_along-4.9.0/tests/test_graph_skills.py +117 -0
- actdim_along-4.9.0/tests/test_handoff_entities.py +649 -0
- actdim_along-4.9.0/tests/test_hermetic_snapshot.py +76 -0
- actdim_along-4.9.0/tests/test_hook_activation.py +380 -0
- actdim_along-4.9.0/tests/test_hooks_audit_scrubbing.py +281 -0
- actdim_along-4.9.0/tests/test_hooks_claude.py +435 -0
- actdim_along-4.9.0/tests/test_hooks_codex.py +395 -0
- actdim_along-4.9.0/tests/test_hooks_core.py +402 -0
- actdim_along-4.9.0/tests/test_hooks_generic.py +272 -0
- actdim_along-4.9.0/tests/test_hooks_tool_coverage.py +130 -0
- actdim_along-4.9.0/tests/test_inquiry_gate.py +291 -0
- actdim_along-4.9.0/tests/test_install_marker.py +156 -0
- actdim_along-4.9.0/tests/test_installers.py +550 -0
- actdim_along-4.9.0/tests/test_integration_registry.py +88 -0
- actdim_along-4.9.0/tests/test_issue_drafts.py +214 -0
- actdim_along-4.9.0/tests/test_issue_lifecycle.py +739 -0
- actdim_along-4.9.0/tests/test_issue_plans.py +363 -0
- actdim_along-4.9.0/tests/test_issue_stub_validation.py +305 -0
- actdim_along-4.9.0/tests/test_issue_verify_policy.py +297 -0
- actdim_along-4.9.0/tests/test_kb_search.py +480 -0
- actdim_along-4.9.0/tests/test_kb_sync.py +713 -0
- actdim_along-4.9.0/tests/test_lifecycle_hooks.py +231 -0
- actdim_along-4.9.0/tests/test_lifecycle_test_evidence.py +357 -0
- actdim_along-4.9.0/tests/test_lifecycle_wrap.py +924 -0
- actdim_along-4.9.0/tests/test_lint_unstaged.py +179 -0
- actdim_along-4.9.0/tests/test_merge_driver.py +418 -0
- actdim_along-4.9.0/tests/test_migration.py +635 -0
- actdim_along-4.9.0/tests/test_modular_decisions.py +525 -0
- actdim_along-4.9.0/tests/test_multi_subproject_find.py +126 -0
- actdim_along-4.9.0/tests/test_opencode_runtime.py +228 -0
- actdim_along-4.9.0/tests/test_orchestration_profiles.py +115 -0
- actdim_along-4.9.0/tests/test_orchestrator.py +706 -0
- actdim_along-4.9.0/tests/test_orchestrator_telemetry.py +146 -0
- actdim_along-4.9.0/tests/test_output_distillation.py +179 -0
- actdim_along-4.9.0/tests/test_parallel_closeout.py +880 -0
- actdim_along-4.9.0/tests/test_plan_approve_batch.py +113 -0
- actdim_along-4.9.0/tests/test_plan_scope.py +183 -0
- actdim_along-4.9.0/tests/test_profiles.py +147 -0
- actdim_along-4.9.0/tests/test_progressive_disclosure.py +103 -0
- actdim_along-4.9.0/tests/test_projection_autosync.py +90 -0
- actdim_along-4.9.0/tests/test_release_ci_check.py +284 -0
- actdim_along-4.9.0/tests/test_release_engine.py +449 -0
- actdim_along-4.9.0/tests/test_repo_state_gates.py +212 -0
- actdim_along-4.9.0/tests/test_rule_pack_protection.py +191 -0
- actdim_along-4.9.0/tests/test_rules.py +353 -0
- actdim_along-4.9.0/tests/test_runner_antigravity.py +272 -0
- actdim_along-4.9.0/tests/test_runtime_adapters.py +632 -0
- actdim_along-4.9.0/tests/test_runtime_contracts.py +72 -0
- actdim_along-4.9.0/tests/test_runtime_detection.py +170 -0
- actdim_along-4.9.0/tests/test_sanitizer.py +353 -0
- actdim_along-4.9.0/tests/test_scaffold_init.py +267 -0
- actdim_along-4.9.0/tests/test_scaffold_profiles.py +241 -0
- actdim_along-4.9.0/tests/test_scan_deps.py +393 -0
- actdim_along-4.9.0/tests/test_session_bindings.py +331 -0
- actdim_along-4.9.0/tests/test_session_blackboard.py +288 -0
- actdim_along-4.9.0/tests/test_session_create.py +102 -0
- actdim_along-4.9.0/tests/test_session_records.py +646 -0
- actdim_along-4.9.0/tests/test_session_scanner_leak.py +115 -0
- actdim_along-4.9.0/tests/test_session_wrap_partial.py +128 -0
- actdim_along-4.9.0/tests/test_shell_classification.py +204 -0
- actdim_along-4.9.0/tests/test_skills_and_scripts.py +2573 -0
- actdim_along-4.9.0/tests/test_start_guard.py +181 -0
- actdim_along-4.9.0/tests/test_stream_runner.py +254 -0
- actdim_along-4.9.0/tests/test_subagent_denials.py +220 -0
- actdim_along-4.9.0/tests/test_subcommand_help.py +157 -0
- actdim_along-4.9.0/tests/test_subproject_and_team_gates.py +247 -0
- actdim_along-4.9.0/tests/test_subproject_model.py +224 -0
- actdim_along-4.9.0/tests/test_system_comparisons.py +102 -0
- actdim_along-4.9.0/tests/test_telegram.py +140 -0
- actdim_along-4.9.0/tests/test_telemetry_engine.py +429 -0
- actdim_along-4.9.0/tests/test_telemetry_models.py +314 -0
- actdim_along-4.9.0/tests/test_telemetry_otlp.py +596 -0
- actdim_along-4.9.0/tests/test_telemetry_redactor_offloader.py +307 -0
- actdim_along-4.9.0/tests/test_test_runner.py +160 -0
- actdim_along-4.9.0/tests/test_update_and_hooks_hardening.py +587 -0
- actdim_along-4.9.0/tests/test_update_maintenance_friction.py +113 -0
- actdim_along-4.9.0/tests/test_verify_policy.py +330 -0
- actdim_along-4.9.0/tests/test_version_bump.py +14 -0
- actdim_along-4.9.0/tests/test_vision.py +118 -0
- actdim_along-4.9.0/tests/test_workspace_containment.py +280 -0
- actdim_along-4.9.0/tests/test_worktree.py +703 -0
- actdim_along-4.9.0/tests/test_wrap_engine_writes.py +186 -0
- 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
|
actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/rules/languages/python.md
ADDED
|
@@ -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
|
+
|
actdim_along-4.9.0/.along/.migration-backup/2026-11-14-230651/.along/rules/languages/typescript.md
ADDED
|
@@ -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
|
+
|