tau-biggz 0.1.3__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.
- tau_biggz-0.1.3/.github/CODEOWNERS +1 -0
- tau_biggz-0.1.3/.github/workflows/ci.yml +70 -0
- tau_biggz-0.1.3/.github/workflows/docs.yml +55 -0
- tau_biggz-0.1.3/.github/workflows/publish.yml +28 -0
- tau_biggz-0.1.3/.gitignore +18 -0
- tau_biggz-0.1.3/.python-version +1 -0
- tau_biggz-0.1.3/.tau/skills/skill-creator/SKILL.md +177 -0
- tau_biggz-0.1.3/AGENTS.md +81 -0
- tau_biggz-0.1.3/CONTRIBUTING.md +145 -0
- tau_biggz-0.1.3/LICENSE +21 -0
- tau_biggz-0.1.3/PKG-INFO +249 -0
- tau_biggz-0.1.3/README.md +228 -0
- tau_biggz-0.1.3/dev-notes/README.md +25 -0
- tau_biggz-0.1.3/dev-notes/adr/0001-use-textual-for-tui.md +30 -0
- tau_biggz-0.1.3/dev-notes/adr/0002-keep-tool-docs-hand-written.md +76 -0
- tau_biggz-0.1.3/dev-notes/architecture/cli-bad-model-error.md +86 -0
- tau_biggz-0.1.3/dev-notes/architecture/config-driven-provider-catalog.md +135 -0
- tau_biggz-0.1.3/dev-notes/architecture/index.md +61 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-1-core-types-and-events.md +249 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-10-system-prompt.md +151 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-11-print-event-rendering.md +135 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-12-textual-tui.md +149 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-13-paths-agents-resources.md +140 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-14-session-manager-resume.md +187 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-15-slash-command-registry.md +159 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-16-resource-discovery.md +102 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-17-5-transcript-wrapping.md +84 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-17-tui-autocomplete.md +100 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-18-provider-config-foundation.md +194 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-19-context-discovery.md +112 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-2-ai-provider-layer.md +178 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-20-1-context-accounting.md +82 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-20-2-thinking-controls.md +160 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-20-3-skill-invocation.md +90 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-20-4-session-export.md +71 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-20-installation-docs.md +64 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-22-compaction-foundation.md +139 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-23-tui-polish.md +221 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-24-session-tree-branching.md +59 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-25-system-command.md +41 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-3-agent-loop.md +243 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-4-agent-harness.md +196 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-5-coding-tools.md +126 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-6-print-mode-cli.md +127 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-7-session-tree.md +138 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-8-coding-session.md +146 -0
- tau_biggz-0.1.3/dev-notes/architecture/phase-9-skills-prompts.md +211 -0
- tau_biggz-0.1.3/dev-notes/architecture/pre-extension-hardening.md +116 -0
- tau_biggz-0.1.3/dev-notes/architecture/provider-catalog-live-validation.md +300 -0
- tau_biggz-0.1.3/dev-notes/architecture/provider-model-safety.md +48 -0
- tau_biggz-0.1.3/dev-notes/architecture/provider-retries.md +39 -0
- tau_biggz-0.1.3/dev-notes/architecture/queued-steering-follow-ups.md +73 -0
- tau_biggz-0.1.3/dev-notes/architecture/startup-update-check.md +30 -0
- tau_biggz-0.1.3/dev-notes/config-driven-providers.md +102 -0
- tau_biggz-0.1.3/dev-notes/design/00-roadmap.md +67 -0
- tau_biggz-0.1.3/dev-notes/design/01-architecture.md +37 -0
- tau_biggz-0.1.3/dev-notes/design/02-agent-loop.md +24 -0
- tau_biggz-0.1.3/dev-notes/design/03-tools.md +327 -0
- tau_biggz-0.1.3/dev-notes/design/04-sessions.md +87 -0
- tau_biggz-0.1.3/dev-notes/design/05-core-types-and-events.md +66 -0
- tau_biggz-0.1.3/dev-notes/design/agent-loop.md +35 -0
- tau_biggz-0.1.3/dev-notes/design/harness.md +65 -0
- tau_biggz-0.1.3/dev-notes/extensions.md +161 -0
- tau_biggz-0.1.3/dev-notes/harnesses.md +662 -0
- tau_biggz-0.1.3/dev-notes/release-notes-startup.md +21 -0
- tau_biggz-0.1.3/dev-notes/release-process.md +61 -0
- tau_biggz-0.1.3/dev-notes/sdk.md +112 -0
- tau_biggz-0.1.3/dev-notes/tui-session-modal-selection-copy.md +35 -0
- tau_biggz-0.1.3/docs/assets/tau-header.svg +60 -0
- tau_biggz-0.1.3/example_extensions/agents/planner.md +9 -0
- tau_biggz-0.1.3/example_extensions/agents/reviewer.md +10 -0
- tau_biggz-0.1.3/example_extensions/greeting_ext.py +18 -0
- tau_biggz-0.1.3/example_extensions/hello_ext.py +26 -0
- tau_biggz-0.1.3/example_extensions/mcp.example.toml +18 -0
- tau_biggz-0.1.3/example_extensions/oficina.toml +18 -0
- tau_biggz-0.1.3/examples/sdk/hello_tau.py +107 -0
- tau_biggz-0.1.3/landing.html +573 -0
- tau_biggz-0.1.3/openspec/changes/greeting-ext/tasks.md +113 -0
- tau_biggz-0.1.3/openspec/changes/models-sync/apply-progress.md +77 -0
- tau_biggz-0.1.3/openspec/changes/models-sync/archive.md +179 -0
- tau_biggz-0.1.3/openspec/changes/models-sync/design.md +1689 -0
- tau_biggz-0.1.3/openspec/changes/models-sync/proposal.md +248 -0
- tau_biggz-0.1.3/openspec/changes/models-sync/specs/models_sync/spec.md +426 -0
- tau_biggz-0.1.3/openspec/changes/models-sync/tasks.md +657 -0
- tau_biggz-0.1.3/openspec/changes/models-sync/verify-report.md +217 -0
- tau_biggz-0.1.3/pyproject.toml +62 -0
- tau_biggz-0.1.3/release-notes/releases.json +68 -0
- tau_biggz-0.1.3/session-temp.jsonl +13 -0
- tau_biggz-0.1.3/src/tau_agent/__init__.py +93 -0
- tau_biggz-0.1.3/src/tau_agent/events.py +134 -0
- tau_biggz-0.1.3/src/tau_agent/harness.py +292 -0
- tau_biggz-0.1.3/src/tau_agent/loop.py +276 -0
- tau_biggz-0.1.3/src/tau_agent/messages.py +47 -0
- tau_biggz-0.1.3/src/tau_agent/py.typed +0 -0
- tau_biggz-0.1.3/src/tau_agent/session/__init__.py +50 -0
- tau_biggz-0.1.3/src/tau_agent/session/entries.py +114 -0
- tau_biggz-0.1.3/src/tau_agent/session/jsonl.py +37 -0
- tau_biggz-0.1.3/src/tau_agent/session/memory.py +136 -0
- tau_biggz-0.1.3/src/tau_agent/session/storage.py +40 -0
- tau_biggz-0.1.3/src/tau_agent/session/tree.py +40 -0
- tau_biggz-0.1.3/src/tau_agent/tools.py +75 -0
- tau_biggz-0.1.3/src/tau_agent/types.py +8 -0
- tau_biggz-0.1.3/src/tau_ai/__init__.py +64 -0
- tau_biggz-0.1.3/src/tau_ai/anthropic.py +358 -0
- tau_biggz-0.1.3/src/tau_ai/env.py +123 -0
- tau_biggz-0.1.3/src/tau_ai/events.py +91 -0
- tau_biggz-0.1.3/src/tau_ai/fake.py +43 -0
- tau_biggz-0.1.3/src/tau_ai/google.py +380 -0
- tau_biggz-0.1.3/src/tau_ai/http_errors.py +65 -0
- tau_biggz-0.1.3/src/tau_ai/mistral.py +415 -0
- tau_biggz-0.1.3/src/tau_ai/openai_codex.py +742 -0
- tau_biggz-0.1.3/src/tau_ai/openai_compatible.py +924 -0
- tau_biggz-0.1.3/src/tau_ai/provider.py +34 -0
- tau_biggz-0.1.3/src/tau_ai/py.typed +0 -0
- tau_biggz-0.1.3/src/tau_ai/retry.py +62 -0
- tau_biggz-0.1.3/src/tau_coding/__init__.py +296 -0
- tau_biggz-0.1.3/src/tau_coding/_fix_encoding.py +23 -0
- tau_biggz-0.1.3/src/tau_coding/agents.py +114 -0
- tau_biggz-0.1.3/src/tau_coding/branch_summary.py +205 -0
- tau_biggz-0.1.3/src/tau_coding/catalog_loader.py +550 -0
- tau_biggz-0.1.3/src/tau_coding/cli.py +650 -0
- tau_biggz-0.1.3/src/tau_coding/commands.py +847 -0
- tau_biggz-0.1.3/src/tau_coding/context.py +95 -0
- tau_biggz-0.1.3/src/tau_coding/context_window.py +285 -0
- tau_biggz-0.1.3/src/tau_coding/credentials.py +185 -0
- tau_biggz-0.1.3/src/tau_coding/data/catalog.toml +6601 -0
- tau_biggz-0.1.3/src/tau_coding/data/release-notes/releases.json +68 -0
- tau_biggz-0.1.3/src/tau_coding/diagnostics.py +100 -0
- tau_biggz-0.1.3/src/tau_coding/extensions.py +349 -0
- tau_biggz-0.1.3/src/tau_coding/harness.py +300 -0
- tau_biggz-0.1.3/src/tau_coding/mcp_integration.py +249 -0
- tau_biggz-0.1.3/src/tau_coding/mcp_manager.py +136 -0
- tau_biggz-0.1.3/src/tau_coding/models_sync.py +523 -0
- tau_biggz-0.1.3/src/tau_coding/oauth.py +503 -0
- tau_biggz-0.1.3/src/tau_coding/package_manager.py +364 -0
- tau_biggz-0.1.3/src/tau_coding/paths.py +121 -0
- tau_biggz-0.1.3/src/tau_coding/prompt_templates.py +198 -0
- tau_biggz-0.1.3/src/tau_coding/provider_add.py +179 -0
- tau_biggz-0.1.3/src/tau_coding/provider_catalog.py +86 -0
- tau_biggz-0.1.3/src/tau_coding/provider_config.py +2220 -0
- tau_biggz-0.1.3/src/tau_coding/provider_runtime.py +172 -0
- tau_biggz-0.1.3/src/tau_coding/py.typed +0 -0
- tau_biggz-0.1.3/src/tau_coding/reload.py +30 -0
- tau_biggz-0.1.3/src/tau_coding/rendering/__init__.py +27 -0
- tau_biggz-0.1.3/src/tau_coding/rendering/base.py +26 -0
- tau_biggz-0.1.3/src/tau_coding/rendering/json.py +24 -0
- tau_biggz-0.1.3/src/tau_coding/rendering/plain.py +38 -0
- tau_biggz-0.1.3/src/tau_coding/rendering/transcript.py +106 -0
- tau_biggz-0.1.3/src/tau_coding/resources.py +173 -0
- tau_biggz-0.1.3/src/tau_coding/rpc.py +323 -0
- tau_biggz-0.1.3/src/tau_coding/session.py +2238 -0
- tau_biggz-0.1.3/src/tau_coding/session_export.py +664 -0
- tau_biggz-0.1.3/src/tau_coding/session_manager.py +257 -0
- tau_biggz-0.1.3/src/tau_coding/shell_config.py +64 -0
- tau_biggz-0.1.3/src/tau_coding/skills.py +214 -0
- tau_biggz-0.1.3/src/tau_coding/system_prompt.py +172 -0
- tau_biggz-0.1.3/src/tau_coding/thinking.py +90 -0
- tau_biggz-0.1.3/src/tau_coding/tools.py +1382 -0
- tau_biggz-0.1.3/src/tau_coding/tui/__init__.py +67 -0
- tau_biggz-0.1.3/src/tau_coding/tui/_terminal_title.py +34 -0
- tau_biggz-0.1.3/src/tau_coding/tui/adapter.py +100 -0
- tau_biggz-0.1.3/src/tau_coding/tui/app.py +4332 -0
- tau_biggz-0.1.3/src/tau_coding/tui/autocomplete.py +511 -0
- tau_biggz-0.1.3/src/tau_coding/tui/config.py +349 -0
- tau_biggz-0.1.3/src/tau_coding/tui/state.py +377 -0
- tau_biggz-0.1.3/src/tau_coding/tui/widgets.py +1541 -0
- tau_biggz-0.1.3/src/tau_coding/update_check.py +375 -0
- tau_biggz-0.1.3/tests/fixtures/models.dev.api.json +41 -0
- tau_biggz-0.1.3/tests/test_agent_harness.py +434 -0
- tau_biggz-0.1.3/tests/test_agent_loop.py +633 -0
- tau_biggz-0.1.3/tests/test_agent_types.py +120 -0
- tau_biggz-0.1.3/tests/test_approval_chain.py +65 -0
- tau_biggz-0.1.3/tests/test_cli.py +1015 -0
- tau_biggz-0.1.3/tests/test_coding_session.py +3297 -0
- tau_biggz-0.1.3/tests/test_coding_tools.py +246 -0
- tau_biggz-0.1.3/tests/test_commands.py +498 -0
- tau_biggz-0.1.3/tests/test_context.py +53 -0
- tau_biggz-0.1.3/tests/test_context_window.py +127 -0
- tau_biggz-0.1.3/tests/test_credentials.py +48 -0
- tau_biggz-0.1.3/tests/test_extensions.py +123 -0
- tau_biggz-0.1.3/tests/test_harness.py +141 -0
- tau_biggz-0.1.3/tests/test_models_sync.py +653 -0
- tau_biggz-0.1.3/tests/test_oauth.py +110 -0
- tau_biggz-0.1.3/tests/test_package_metadata.py +23 -0
- tau_biggz-0.1.3/tests/test_paths.py +41 -0
- tau_biggz-0.1.3/tests/test_prompt_templates.py +159 -0
- tau_biggz-0.1.3/tests/test_provider_add.py +77 -0
- tau_biggz-0.1.3/tests/test_provider_catalog.py +302 -0
- tau_biggz-0.1.3/tests/test_provider_config.py +1051 -0
- tau_biggz-0.1.3/tests/test_provider_runtime.py +116 -0
- tau_biggz-0.1.3/tests/test_rendering.py +131 -0
- tau_biggz-0.1.3/tests/test_resources.py +63 -0
- tau_biggz-0.1.3/tests/test_session.py +257 -0
- tau_biggz-0.1.3/tests/test_session_export.py +73 -0
- tau_biggz-0.1.3/tests/test_session_manager.py +163 -0
- tau_biggz-0.1.3/tests/test_shell_config.py +46 -0
- tau_biggz-0.1.3/tests/test_skills.py +208 -0
- tau_biggz-0.1.3/tests/test_system_prompt.py +132 -0
- tau_biggz-0.1.3/tests/test_tau_ai.py +1709 -0
- tau_biggz-0.1.3/tests/test_thinking.py +42 -0
- tau_biggz-0.1.3/tests/test_tui_adapter.py +325 -0
- tau_biggz-0.1.3/tests/test_tui_app.py +5565 -0
- tau_biggz-0.1.3/tests/test_tui_autocomplete.py +517 -0
- tau_biggz-0.1.3/tests/test_tui_config.py +166 -0
- tau_biggz-0.1.3/tests/test_update_check.py +285 -0
- tau_biggz-0.1.3/uv.lock +1058 -0
- tau_biggz-0.1.3/website/assets/css/main.css +681 -0
- tau_biggz-0.1.3/website/assets/js/nav-toggle.js +63 -0
- tau_biggz-0.1.3/website/content/_index.md +6 -0
- tau_biggz-0.1.3/website/content/concepts.md +75 -0
- tau_biggz-0.1.3/website/content/contributing.md +66 -0
- tau_biggz-0.1.3/website/content/guides/_index.md +8 -0
- tau_biggz-0.1.3/website/content/guides/context.md +78 -0
- tau_biggz-0.1.3/website/content/guides/print-mode.md +57 -0
- tau_biggz-0.1.3/website/content/guides/project-instructions.md +50 -0
- tau_biggz-0.1.3/website/content/guides/providers-and-models.md +170 -0
- tau_biggz-0.1.3/website/content/guides/sessions.md +89 -0
- tau_biggz-0.1.3/website/content/guides/skills-and-prompts.md +89 -0
- tau_biggz-0.1.3/website/content/guides/tui.md +93 -0
- tau_biggz-0.1.3/website/content/internals/_index.md +8 -0
- tau_biggz-0.1.3/website/content/internals/agent-loop.md +51 -0
- tau_biggz-0.1.3/website/content/internals/architecture.md +62 -0
- tau_biggz-0.1.3/website/content/internals/custom-frontend.md +108 -0
- tau_biggz-0.1.3/website/content/internals/design-principles.md +45 -0
- tau_biggz-0.1.3/website/content/quickstart.md +118 -0
- tau_biggz-0.1.3/website/content/reference/_index.md +8 -0
- tau_biggz-0.1.3/website/content/reference/cli.md +74 -0
- tau_biggz-0.1.3/website/content/reference/configuration.md +224 -0
- tau_biggz-0.1.3/website/content/reference/keybindings.md +50 -0
- tau_biggz-0.1.3/website/content/reference/slash-commands.md +39 -0
- tau_biggz-0.1.3/website/content/reference/tools.md +106 -0
- tau_biggz-0.1.3/website/content/releases.md +7 -0
- tau_biggz-0.1.3/website/content/what-is-tau.md +58 -0
- tau_biggz-0.1.3/website/content/why-tau.md +8 -0
- tau_biggz-0.1.3/website/data/sidebar.yaml +52 -0
- tau_biggz-0.1.3/website/hugo.toml +46 -0
- tau_biggz-0.1.3/website/layouts/404.html +16 -0
- tau_biggz-0.1.3/website/layouts/_default/baseof.html +18 -0
- tau_biggz-0.1.3/website/layouts/_default/releases.html +69 -0
- tau_biggz-0.1.3/website/layouts/_default/why-tau.html +205 -0
- tau_biggz-0.1.3/website/layouts/doc/single.html +17 -0
- tau_biggz-0.1.3/website/layouts/index.html +190 -0
- tau_biggz-0.1.3/website/layouts/partials/admonition.html +7 -0
- tau_biggz-0.1.3/website/layouts/partials/docs-prevnext.html +27 -0
- tau_biggz-0.1.3/website/layouts/partials/footer.html +14 -0
- tau_biggz-0.1.3/website/layouts/partials/head.html +52 -0
- tau_biggz-0.1.3/website/layouts/partials/navbar.html +26 -0
- tau_biggz-0.1.3/website/layouts/partials/sidebar.html +21 -0
- tau_biggz-0.1.3/website/layouts/shortcodes/caution.html +1 -0
- tau_biggz-0.1.3/website/layouts/shortcodes/note.html +1 -0
- tau_biggz-0.1.3/website/layouts/shortcodes/tip.html +1 -0
- tau_biggz-0.1.3/website/static/CNAME +1 -0
- tau_biggz-0.1.3/website/static/android-chrome-192x192.png +0 -0
- tau_biggz-0.1.3/website/static/android-chrome-512x512.png +0 -0
- tau_biggz-0.1.3/website/static/apple-touch-icon.png +0 -0
- tau_biggz-0.1.3/website/static/favicon-16x16.png +0 -0
- tau_biggz-0.1.3/website/static/favicon-32x32.png +0 -0
- tau_biggz-0.1.3/website/static/favicon.ico +0 -0
- tau_biggz-0.1.3/website/static/images/og-image.png +0 -0
- tau_biggz-0.1.3/website/static/landing.js +366 -0
- tau_biggz-0.1.3/website/static/site.webmanifest +11 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @alejandro-ao
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: ci-${{ github.workflow }}-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
python:
|
|
19
|
+
name: Python checks
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- name: Check out repository
|
|
23
|
+
uses: actions/checkout@v5
|
|
24
|
+
|
|
25
|
+
- name: Set up Python
|
|
26
|
+
uses: actions/setup-python@v6
|
|
27
|
+
with:
|
|
28
|
+
python-version-file: .python-version
|
|
29
|
+
|
|
30
|
+
- name: Set up uv
|
|
31
|
+
uses: astral-sh/setup-uv@v7
|
|
32
|
+
with:
|
|
33
|
+
enable-cache: true
|
|
34
|
+
|
|
35
|
+
- name: Install dependencies
|
|
36
|
+
run: uv sync --dev --locked
|
|
37
|
+
|
|
38
|
+
- name: Run tests
|
|
39
|
+
run: uv run pytest
|
|
40
|
+
|
|
41
|
+
- name: Run Ruff lint
|
|
42
|
+
run: uv run ruff check .
|
|
43
|
+
|
|
44
|
+
- name: Check formatting
|
|
45
|
+
run: uv run ruff format --check .
|
|
46
|
+
|
|
47
|
+
- name: Run mypy
|
|
48
|
+
run: uv run mypy
|
|
49
|
+
|
|
50
|
+
docs:
|
|
51
|
+
name: Documentation build
|
|
52
|
+
runs-on: ubuntu-latest
|
|
53
|
+
defaults:
|
|
54
|
+
run:
|
|
55
|
+
working-directory: website
|
|
56
|
+
steps:
|
|
57
|
+
- name: Check out repository
|
|
58
|
+
uses: actions/checkout@v5
|
|
59
|
+
|
|
60
|
+
- name: Setup Hugo
|
|
61
|
+
uses: peaceiris/actions-hugo@v3
|
|
62
|
+
with:
|
|
63
|
+
hugo-version: "0.152.2"
|
|
64
|
+
extended: true
|
|
65
|
+
|
|
66
|
+
- name: Build documentation
|
|
67
|
+
run: hugo --minify
|
|
68
|
+
|
|
69
|
+
- name: Build search index
|
|
70
|
+
run: npx --yes pagefind@latest --site public
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
name: Deploy documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
pages: write
|
|
12
|
+
id-token: write
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: pages
|
|
16
|
+
cancel-in-progress: false
|
|
17
|
+
|
|
18
|
+
defaults:
|
|
19
|
+
run:
|
|
20
|
+
working-directory: website
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
build:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
steps:
|
|
26
|
+
- name: Checkout
|
|
27
|
+
uses: actions/checkout@v5
|
|
28
|
+
|
|
29
|
+
- name: Setup Hugo
|
|
30
|
+
uses: peaceiris/actions-hugo@v3
|
|
31
|
+
with:
|
|
32
|
+
hugo-version: "0.152.2"
|
|
33
|
+
extended: true
|
|
34
|
+
|
|
35
|
+
- name: Build documentation
|
|
36
|
+
run: hugo --minify
|
|
37
|
+
|
|
38
|
+
- name: Build search index
|
|
39
|
+
run: npx --yes pagefind@latest --site public
|
|
40
|
+
|
|
41
|
+
- name: Upload artifact
|
|
42
|
+
uses: actions/upload-pages-artifact@v4
|
|
43
|
+
with:
|
|
44
|
+
path: website/public
|
|
45
|
+
|
|
46
|
+
deploy:
|
|
47
|
+
environment:
|
|
48
|
+
name: github-pages
|
|
49
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
needs: build
|
|
52
|
+
steps:
|
|
53
|
+
- name: Deploy to GitHub Pages
|
|
54
|
+
id: deployment
|
|
55
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Publish Python package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types:
|
|
6
|
+
- published
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
publish:
|
|
14
|
+
name: Publish to PyPI
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
environment: pypi
|
|
17
|
+
steps:
|
|
18
|
+
- name: Check out repository
|
|
19
|
+
uses: actions/checkout@v5
|
|
20
|
+
|
|
21
|
+
- name: Set up uv
|
|
22
|
+
uses: astral-sh/setup-uv@v7
|
|
23
|
+
|
|
24
|
+
- name: Build package
|
|
25
|
+
run: uv build
|
|
26
|
+
|
|
27
|
+
- name: Publish package
|
|
28
|
+
run: uv publish
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[oc]
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
wheels/
|
|
7
|
+
*.egg-info
|
|
8
|
+
.mypy_cache/
|
|
9
|
+
|
|
10
|
+
# Virtual environments
|
|
11
|
+
.venv
|
|
12
|
+
|
|
13
|
+
# Hugo docs site (website/)
|
|
14
|
+
website/public/
|
|
15
|
+
website/resources/
|
|
16
|
+
website/.hugo_build.lock
|
|
17
|
+
# Local Pi runtime state
|
|
18
|
+
.atl/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-creator
|
|
3
|
+
description: "Trigger: create skill, new skill, crear skill, make extension, new extension, crear extension, make harness, new harness, custom harness, crear harness. Creates Tau skills, extensions, or harnesses after exploring project context, Tau architecture, and relevant references."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Activation Contract
|
|
7
|
+
|
|
8
|
+
Use this workflow when the user asks to **create a new skill, extension, or harness** for Tau.
|
|
9
|
+
|
|
10
|
+
Tau has three artifact types you can create:
|
|
11
|
+
|
|
12
|
+
| Artifact | Format | Location | Purpose |
|
|
13
|
+
|----------|--------|----------|---------|
|
|
14
|
+
| **Skill** | `.md` with frontmatter | `.tau/skills/<name>/SKILL.md` or `~/.tau/skills/<name>/SKILL.md` | Markdown instructions the agent loads via `/skill:<name>` |
|
|
15
|
+
| **Extension** | `.py` (extension class) | `.tau/extensions/<name>.py` or `~/.tau/extensions/<name>.py` | Python code with `@tool`, `@command`, `@on` decorators |
|
|
16
|
+
| **Harness** | `.toml` | `.tau/harnesses/<name>.toml` or `~/.tau/harnesses/<name>.toml` | TOML config for personality, tools, approval, subagents |
|
|
17
|
+
|
|
18
|
+
## Hard Rules
|
|
19
|
+
|
|
20
|
+
1. **ALWAYS explore before creating** — never jump to implementation without context.
|
|
21
|
+
2. Follow the exploration order: project → Tau architecture → web references.
|
|
22
|
+
3. After exploring, present a plan to the user before writing files.
|
|
23
|
+
4. Reference existing examples when creating new artifacts.
|
|
24
|
+
5. Validate syntax after creation (ruff for .py, tomllib for .toml, frontmatter parse for .md).
|
|
25
|
+
|
|
26
|
+
## Exploration Phase (MANDATORY)
|
|
27
|
+
|
|
28
|
+
### Step 1 — Explore the project
|
|
29
|
+
|
|
30
|
+
Read project context to understand naming, conventions, and existing patterns:
|
|
31
|
+
|
|
32
|
+
- `AGENTS.md` or project README for guidelines
|
|
33
|
+
- Existing skills (`ls .tau/skills/`, `ls ~/.tau/skills/`)
|
|
34
|
+
- Existing extensions (`ls .tau/extensions/`, `ls ~/.tau/extensions/`, `ls example_extensions/`)
|
|
35
|
+
- Existing harnesses (`ls .tau/harnesses/`, `ls ~/.tau/harnesses/`)
|
|
36
|
+
- `pyproject.toml` for project metadata
|
|
37
|
+
|
|
38
|
+
### Step 2 — Explore Tau's architecture
|
|
39
|
+
|
|
40
|
+
Read the relevant source files to understand the API:
|
|
41
|
+
|
|
42
|
+
**For skills**:
|
|
43
|
+
- `src/tau_coding/skills.py` — Skill dataclass, load/expand/format
|
|
44
|
+
- `src/tau_coding/resources.py` — `parse_markdown_resource()` for frontmatter format
|
|
45
|
+
|
|
46
|
+
**For extensions**:
|
|
47
|
+
- `src/tau_coding/extensions.py` — Extension base class, @tool/@command/@on decorators
|
|
48
|
+
- `src/tau_coding/tools.py` — `_wrap_tool_with_events()` for event dispatch
|
|
49
|
+
- Existing examples in `example_extensions/`
|
|
50
|
+
|
|
51
|
+
**For harnesses**:
|
|
52
|
+
- `src/tau_coding/harness.py` — HarnessDefinition, _parse_harness_file()
|
|
53
|
+
- `dev-notes/harnesses.md` — full harness guide
|
|
54
|
+
- Existing examples in `.tau/harnesses/` or `~/.tau/harnesses/`
|
|
55
|
+
|
|
56
|
+
### Step 3 — Search the web (when relevant)
|
|
57
|
+
|
|
58
|
+
When the skill, extension, or harness wraps or integrates an external service, search for:
|
|
59
|
+
- API documentation
|
|
60
|
+
- Best practices
|
|
61
|
+
- Python client libraries
|
|
62
|
+
- Security considerations
|
|
63
|
+
|
|
64
|
+
## Execution Steps
|
|
65
|
+
|
|
66
|
+
### Creating a Skill
|
|
67
|
+
|
|
68
|
+
1. Choose a kebab-case name that matches the user-facing trigger.
|
|
69
|
+
2. Create `.tau/skills/<name>/SKILL.md` (project) or `~/.tau/skills/<name>/SKILL.md` (user):
|
|
70
|
+
|
|
71
|
+
```markdown
|
|
72
|
+
---
|
|
73
|
+
name: <skill-name>
|
|
74
|
+
description: "Trigger: {trigger phrases}. {One-line summary}."
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Activation Contract
|
|
78
|
+
|
|
79
|
+
When to use this skill...
|
|
80
|
+
|
|
81
|
+
## Hard Rules
|
|
82
|
+
|
|
83
|
+
Non-negotiable constraints...
|
|
84
|
+
|
|
85
|
+
## Execution Steps
|
|
86
|
+
|
|
87
|
+
1. First step...
|
|
88
|
+
2. Second step...
|
|
89
|
+
|
|
90
|
+
## Output Contract
|
|
91
|
+
|
|
92
|
+
What this skill produces.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
3. Frontmatter rules:
|
|
96
|
+
- `name` matches the directory name
|
|
97
|
+
- `description` is one line with trigger words first
|
|
98
|
+
- Only simple `key: value` pairs (Tau's parser is minimal)
|
|
99
|
+
4. Verify: create a test invocation with `python -c "from tau_coding.skills import load_skills; skills = load_skills(); assert any(s.name == '<name>' for s in skills)"`
|
|
100
|
+
|
|
101
|
+
### Creating an Extension
|
|
102
|
+
|
|
103
|
+
1. Choose a PascalCase class name and a kebab-case file name.
|
|
104
|
+
2. Create `.tau/extensions/<name>.py` (project) or `~/.tau/extensions/<name>.py` (user):
|
|
105
|
+
|
|
106
|
+
```python
|
|
107
|
+
"""Docstring describing the extension."""
|
|
108
|
+
|
|
109
|
+
from tau_coding.extensions import Extension, tool, command, on
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class <Name>Extension(Extension):
|
|
113
|
+
@tool("<tool_name>", "<Tool description>")
|
|
114
|
+
def <method_name>(self, <params>) -> <return_type>:
|
|
115
|
+
\"\"\"Docstring.\"\"\"
|
|
116
|
+
...
|
|
117
|
+
|
|
118
|
+
@command("<cmd_name>", description="<description>")
|
|
119
|
+
def <method_name>(self, args: str) -> str | None:
|
|
120
|
+
...
|
|
121
|
+
return ...
|
|
122
|
+
|
|
123
|
+
@on("<event_name>")
|
|
124
|
+
def <method_name>(self, event: dict) -> dict | None:
|
|
125
|
+
...
|
|
126
|
+
return None # or {"block": True, "reason": "..."}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
3. Follow the existing patterns in `example_extensions/hello_ext.py` and `example_extensions/greeting_ext.py`.
|
|
130
|
+
4. Verify: `uv run ruff check .tau/extensions/<name>.py` and test loading with:
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
from tau_coding.extensions import ExtensionRegistry
|
|
134
|
+
from pathlib import Path
|
|
135
|
+
reg = ExtensionRegistry()
|
|
136
|
+
reg.add_search_path(Path(".tau/extensions"))
|
|
137
|
+
instances = reg.load_all()
|
|
138
|
+
assert any("<name>" in i.path for i in instances)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Creating a Harness
|
|
142
|
+
|
|
143
|
+
1. Choose a short name (one word, kebab-case).
|
|
144
|
+
2. Create `.tau/harnesses/<name>.toml` (project) or `~/.tau/harnesses/<name>.toml` (user):
|
|
145
|
+
|
|
146
|
+
```toml
|
|
147
|
+
name = "<name>"
|
|
148
|
+
description = "<One-line description>"
|
|
149
|
+
|
|
150
|
+
[personality]
|
|
151
|
+
system_prompt = "You are..."
|
|
152
|
+
|
|
153
|
+
[tools]
|
|
154
|
+
builtin = ["read", "write", "edit", "bash"]
|
|
155
|
+
|
|
156
|
+
[approval]
|
|
157
|
+
default = "allow"
|
|
158
|
+
|
|
159
|
+
[approval.rules]
|
|
160
|
+
bash = "deny"
|
|
161
|
+
|
|
162
|
+
[[subagents]]
|
|
163
|
+
name = "<agent-name>"
|
|
164
|
+
instructions = "<agent instructions>"
|
|
165
|
+
tools = ["read"]
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
3. Supported sections: `name`, `description`, `[personality]` (system_prompt, guidelines), `[provider]` (name, model, thinking), `[tools]` (builtin, extensions), `[approval]` (default, rules), `[[subagents]]` (name, instructions, tools).
|
|
169
|
+
4. Verify: `python -c "from tau_coding.harness import load_harness; h = load_harness('<name>'); print(f'OK: {h.name}')"` and `python -c "import tomllib; tomllib.loads(open('.tau/harnesses/<name>.toml').read()); print('TOML OK')"`
|
|
170
|
+
|
|
171
|
+
## Output Contract
|
|
172
|
+
|
|
173
|
+
After completing, report:
|
|
174
|
+
- What was created (skill/extension/harness) and its path
|
|
175
|
+
- Key sections or decorators used
|
|
176
|
+
- Verification results (parsing, loading, syntax checks)
|
|
177
|
+
- How to invoke/use it (`/skill:<name>`, runs automatically, `tau --harness <name>`)
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Tau Agent Instructions
|
|
2
|
+
|
|
3
|
+
Tau is a Python implementation of Pi's minimalist coding-agent harness architecture. The goal is to develop it incrementally, with each phase clearly documented and tested.
|
|
4
|
+
|
|
5
|
+
## Project Roadmap
|
|
6
|
+
|
|
7
|
+
The implementation roadmap is tracked in GitHub issue #1:
|
|
8
|
+
|
|
9
|
+
- https://github.com/alejandro-ao/tau/issues/1
|
|
10
|
+
|
|
11
|
+
Use that issue as the primary reference for phase ordering and architectural intent.
|
|
12
|
+
|
|
13
|
+
## Architecture Principles
|
|
14
|
+
|
|
15
|
+
Preserve Pi's core separation of concerns:
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
AgentHarness = reusable agent brain
|
|
19
|
+
AgentSession = coding-agent environment
|
|
20
|
+
TUI = one possible frontend
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Tau should be organized around these layers:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
tau_ai provider/model streaming layer
|
|
27
|
+
tau_agent portable agent harness, loop, tools, events, sessions
|
|
28
|
+
tau_coding CLI app, resources, skills, extensions, commands, TUI integration
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Keep the core agent package independent of CLI, Textual, Rich rendering, session file locations, and application-specific resource loading.
|
|
32
|
+
|
|
33
|
+
## TUI Direction
|
|
34
|
+
|
|
35
|
+
Use Textual for the full interactive TUI, but only behind an adapter boundary. The agent harness should emit events; UI layers should consume those events.
|
|
36
|
+
|
|
37
|
+
Early phases should prioritize:
|
|
38
|
+
|
|
39
|
+
1. print-mode CLI
|
|
40
|
+
2. Rich renderers
|
|
41
|
+
3. Textual interactive app
|
|
42
|
+
|
|
43
|
+
Do not let Textual become a dependency of the reusable agent harness.
|
|
44
|
+
|
|
45
|
+
## Development Workflow
|
|
46
|
+
|
|
47
|
+
- Work in small, documented phases.
|
|
48
|
+
- Keep changes aligned with the roadmap issue.
|
|
49
|
+
- Add or update docs when introducing architectural concepts.
|
|
50
|
+
- Add tests for behavior before expanding features.
|
|
51
|
+
- Run tests and Python commands through `uv` (for example, `uv run pytest` or `uv run python ...`) so they use the project environment.
|
|
52
|
+
- Prefer simple, explicit abstractions over framework-heavy designs.
|
|
53
|
+
- Keep commits atomic: one coherent feature, fix, docs update, refactor, or cleanup per commit.
|
|
54
|
+
|
|
55
|
+
## GitHub Issue and PR Formatting
|
|
56
|
+
|
|
57
|
+
- When creating or editing GitHub issues and pull requests from the CLI, write multiline Markdown bodies through a temporary file or heredoc and pass them with `--body-file`.
|
|
58
|
+
- Do not pass escaped newlines like `\n` inside quoted `--body` strings; GitHub will render them literally instead of as line breaks.
|
|
59
|
+
- Use Markdown headings, blank lines, bullets, and backticks for commands/paths so issue and PR descriptions are readable.
|
|
60
|
+
- After creating or editing a GitHub issue or PR body, verify the rendered source with `gh issue view ... --json body` or `gh pr view ... --json body` when practical.
|
|
61
|
+
|
|
62
|
+
## Python Guidelines
|
|
63
|
+
|
|
64
|
+
- Target the Python version declared in `pyproject.toml`.
|
|
65
|
+
- Prefer typed dataclasses or schema models for core messages, events, tools, and sessions.
|
|
66
|
+
- Keep async boundaries explicit.
|
|
67
|
+
- Use fake providers and fake tools for deterministic agent-loop tests.
|
|
68
|
+
- Avoid provider-specific assumptions in core agent code.
|
|
69
|
+
|
|
70
|
+
## Documentation Expectations
|
|
71
|
+
|
|
72
|
+
Each substantial phase should leave behind beginner-friendly notes under `dev-notes/` (build journals, design docs, ADRs), explaining:
|
|
73
|
+
|
|
74
|
+
- what was added
|
|
75
|
+
- why it exists
|
|
76
|
+
- how it maps to Pi's design
|
|
77
|
+
- how to test or use it
|
|
78
|
+
|
|
79
|
+
When a phase adds or changes user-facing behavior, also update the published docs
|
|
80
|
+
under `website/src/content/docs/` (the "Use Tau" guides and reference).
|
|
81
|
+
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Contributing to Tau
|
|
2
|
+
|
|
3
|
+
Thanks for helping improve Tau. Tau is both a usable terminal coding agent and a teaching codebase for understanding how coding agents are built. Contributions should preserve that dual purpose: make the tool better while keeping the architecture small, readable, and easy to learn from.
|
|
4
|
+
|
|
5
|
+
## Project philosophy
|
|
6
|
+
|
|
7
|
+
Tau is organized around three layers:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
tau_ai provider/model streaming layer
|
|
11
|
+
tau_agent portable agent harness, loop, tools, events, sessions
|
|
12
|
+
tau_coding CLI app, resources, skills, extensions, commands, TUI integration
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The key boundary is:
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
AgentHarness = reusable agent brain
|
|
19
|
+
AgentSession = coding-agent environment
|
|
20
|
+
TUI = one possible frontend
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Please keep these principles in mind:
|
|
24
|
+
|
|
25
|
+
- **Small layers beat magic.** Each package should have one clear job.
|
|
26
|
+
- **Events are the contract.** The harness emits typed events; UI and renderers consume them.
|
|
27
|
+
- **The core stays portable.** `tau_agent` should not depend on the CLI, Textual, Rich, local config paths, or Tau-specific resource loading.
|
|
28
|
+
- **Tools are ordinary typed functions.** Prefer explicit schemas and structured results.
|
|
29
|
+
- **Sessions are durable and inspectable.** Avoid changes that make history hard to read, resume, or export.
|
|
30
|
+
- **Documentation follows implementation.** User-facing behavior and architectural decisions should be documented.
|
|
31
|
+
|
|
32
|
+
## Local development
|
|
33
|
+
|
|
34
|
+
Use `uv` for Python commands so they run in the project environment.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
uv sync --dev
|
|
38
|
+
uv run tau --version
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Run Tau from the checkout:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
uv run tau
|
|
45
|
+
uv run tau -p "explain this repo"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Checks before submitting
|
|
49
|
+
|
|
50
|
+
Run the relevant focused tests while developing, then run the full checks before opening a pull request when practical:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
uv run pytest
|
|
54
|
+
uv run ruff check .
|
|
55
|
+
uv run ruff format --check .
|
|
56
|
+
uv run mypy
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
For the documentation site (a [Hugo](https://gohugo.io/) project):
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
cd website
|
|
63
|
+
hugo server -D
|
|
64
|
+
hugo --minify
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Where changes belong
|
|
68
|
+
|
|
69
|
+
Use the layer boundaries to decide where code should live:
|
|
70
|
+
|
|
71
|
+
- Provider integrations, model adapters, and provider-neutral streaming belong in `tau_ai`.
|
|
72
|
+
- Agent loop behavior, tool abstractions, events, messages, harnesses, and portable session primitives belong in `tau_agent`.
|
|
73
|
+
- CLI behavior, slash commands, TUI integration, local config, resources, skills, prompt templates, and coding-specific tools belong in `tau_coding`.
|
|
74
|
+
- Textual-specific code should stay behind the TUI layer.
|
|
75
|
+
- Rich rendering should not leak into the reusable agent harness.
|
|
76
|
+
|
|
77
|
+
If a change crosses layers, prefer adding a small typed boundary instead of importing app-specific details into core code.
|
|
78
|
+
|
|
79
|
+
## Adding a provider or model
|
|
80
|
+
|
|
81
|
+
The built-in provider catalog is data, not code: edit
|
|
82
|
+
`src/tau_coding/data/catalog.toml` and open a PR — no Python changes needed.
|
|
83
|
+
Each `[[providers]]` table declares the provider's name, kind
|
|
84
|
+
(`openai-compatible`, `anthropic`, or `openai-codex`), base URL, models,
|
|
85
|
+
default model, context windows, and thinking configuration. Validation happens
|
|
86
|
+
at load time, so a typo fails tests with a pointed error message.
|
|
87
|
+
|
|
88
|
+
For personal or unreleased providers, create `~/.tau/catalog.toml` with the
|
|
89
|
+
same schema — it is overlaid on the built-in catalog (your values win, models
|
|
90
|
+
are unioned) and needs no PR at all.
|
|
91
|
+
|
|
92
|
+
## Testing expectations
|
|
93
|
+
|
|
94
|
+
- Add or update tests for behavior changes.
|
|
95
|
+
- Use fake providers and fake tools for deterministic agent-loop tests.
|
|
96
|
+
- Keep core tests free of provider-specific assumptions.
|
|
97
|
+
- Add regression tests for bugs.
|
|
98
|
+
- Prefer focused tests that describe the behavior being protected.
|
|
99
|
+
|
|
100
|
+
## Documentation expectations
|
|
101
|
+
|
|
102
|
+
For substantial architectural or phase-oriented work, add beginner-friendly notes under `dev-notes/` explaining:
|
|
103
|
+
|
|
104
|
+
- what changed
|
|
105
|
+
- why it exists
|
|
106
|
+
- how it maps to Tau's architecture
|
|
107
|
+
- how to test or use it
|
|
108
|
+
|
|
109
|
+
For user-facing behavior, update the published docs under:
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
website/src/content/docs/
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Release process
|
|
116
|
+
|
|
117
|
+
Tau is published to PyPI as `tau-ai`. Publishing is a production release action,
|
|
118
|
+
not a side effect of every commit merged to `main`.
|
|
119
|
+
|
|
120
|
+
To prepare a release, intentionally bump `[project].version` in `pyproject.toml`
|
|
121
|
+
and merge that change through a pull request. The PyPI workflow publishes only
|
|
122
|
+
when it detects that version change, or when a maintainer uses an explicit
|
|
123
|
+
release trigger such as a published GitHub Release or manual workflow dispatch.
|
|
124
|
+
See [dev-notes/release-process.md](dev-notes/release-process.md) for the full
|
|
125
|
+
process.
|
|
126
|
+
|
|
127
|
+
## Pull request guidelines
|
|
128
|
+
|
|
129
|
+
Good Tau pull requests are small, focused, and easy to review. Please include:
|
|
130
|
+
|
|
131
|
+
- the motivation for the change
|
|
132
|
+
- a summary of behavior changes
|
|
133
|
+
- tests or checks you ran
|
|
134
|
+
- screenshots or terminal output for TUI/CLI changes when useful
|
|
135
|
+
- notes about compatibility, migrations, config changes, or provider-specific behavior
|
|
136
|
+
|
|
137
|
+
Avoid unrelated refactors in feature or bug-fix PRs. If a larger design change is needed, open an issue or discussion first.
|
|
138
|
+
|
|
139
|
+
## Roadmap alignment
|
|
140
|
+
|
|
141
|
+
Tau is developed incrementally. For larger changes, check the roadmap issue before starting:
|
|
142
|
+
|
|
143
|
+
<https://github.com/alejandro-ao/tau/issues/1>
|
|
144
|
+
|
|
145
|
+
When in doubt, favor the smallest step that preserves the architecture and teaches the design clearly.
|
tau_biggz-0.1.3/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alejandro AO
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|