outheis 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. outheis-0.2.0/.github/ISSUE_TEMPLATE//342/233/265/357/270/217-user-story.md +20 -0
  2. outheis-0.2.0/.github/ISSUE_TEMPLATE//360/237/221/271bug.md +38 -0
  3. outheis-0.2.0/.github/workflows/pages.yml +38 -0
  4. outheis-0.2.0/.github/workflows/publish.yml +69 -0
  5. outheis-0.2.0/.github/workflows/test.yml +65 -0
  6. outheis-0.2.0/.gitignore +55 -0
  7. outheis-0.2.0/LICENSE +661 -0
  8. outheis-0.2.0/PKG-INFO +102 -0
  9. outheis-0.2.0/README.md +58 -0
  10. outheis-0.2.0/config.example.json +120 -0
  11. outheis-0.2.0/dev/IMPLEMENTATION.md +209 -0
  12. outheis-0.2.0/docs/index.html +12 -0
  13. outheis-0.2.0/pyproject.toml +101 -0
  14. outheis-0.2.0/src/outheis/__init__.py +7 -0
  15. outheis-0.2.0/src/outheis/__main__.py +6 -0
  16. outheis-0.2.0/src/outheis/agents/__init__.py +25 -0
  17. outheis-0.2.0/src/outheis/agents/action.py +424 -0
  18. outheis-0.2.0/src/outheis/agents/agenda.py +1121 -0
  19. outheis-0.2.0/src/outheis/agents/base.py +179 -0
  20. outheis-0.2.0/src/outheis/agents/code.py +553 -0
  21. outheis-0.2.0/src/outheis/agents/data.py +809 -0
  22. outheis-0.2.0/src/outheis/agents/defaults/rules/agenda.md +21 -0
  23. outheis-0.2.0/src/outheis/agents/defaults/rules/common.md +24 -0
  24. outheis-0.2.0/src/outheis/agents/defaults/rules/data.md +7 -0
  25. outheis-0.2.0/src/outheis/agents/defaults/rules/relay.md +5 -0
  26. outheis-0.2.0/src/outheis/agents/defaults/skills/agenda.md +50 -0
  27. outheis-0.2.0/src/outheis/agents/defaults/skills/common.md +25 -0
  28. outheis-0.2.0/src/outheis/agents/defaults/skills/data.md +9 -0
  29. outheis-0.2.0/src/outheis/agents/loader.py +343 -0
  30. outheis-0.2.0/src/outheis/agents/pattern.py +1568 -0
  31. outheis-0.2.0/src/outheis/agents/relay.py +817 -0
  32. outheis-0.2.0/src/outheis/agents/rules/action.md +47 -0
  33. outheis-0.2.0/src/outheis/agents/rules/agenda.md +101 -0
  34. outheis-0.2.0/src/outheis/agents/rules/code.md +69 -0
  35. outheis-0.2.0/src/outheis/agents/rules/common.md +69 -0
  36. outheis-0.2.0/src/outheis/agents/rules/data.md +69 -0
  37. outheis-0.2.0/src/outheis/agents/rules/pattern.md +65 -0
  38. outheis-0.2.0/src/outheis/agents/rules/relay.md +58 -0
  39. outheis-0.2.0/src/outheis/agents/skills/action.md +34 -0
  40. outheis-0.2.0/src/outheis/agents/skills/agenda.md +92 -0
  41. outheis-0.2.0/src/outheis/agents/skills/code.md +31 -0
  42. outheis-0.2.0/src/outheis/agents/skills/common.md +47 -0
  43. outheis-0.2.0/src/outheis/agents/skills/data.md +78 -0
  44. outheis-0.2.0/src/outheis/agents/skills/pattern.md +81 -0
  45. outheis-0.2.0/src/outheis/agents/skills/relay.md +125 -0
  46. outheis-0.2.0/src/outheis/agents/tasks/__init__.py +17 -0
  47. outheis-0.2.0/src/outheis/agents/tasks/base.py +235 -0
  48. outheis-0.2.0/src/outheis/agents/tasks/news.py +143 -0
  49. outheis-0.2.0/src/outheis/agents/tasks/registry.py +196 -0
  50. outheis-0.2.0/src/outheis/cli/__init__.py +3 -0
  51. outheis-0.2.0/src/outheis/cli/main.py +1127 -0
  52. outheis-0.2.0/src/outheis/core/__init__.py +65 -0
  53. outheis-0.2.0/src/outheis/core/config.py +567 -0
  54. outheis-0.2.0/src/outheis/core/i18n.py +187 -0
  55. outheis-0.2.0/src/outheis/core/index.py +424 -0
  56. outheis-0.2.0/src/outheis/core/llm.py +347 -0
  57. outheis-0.2.0/src/outheis/core/memory.py +402 -0
  58. outheis-0.2.0/src/outheis/core/message.py +190 -0
  59. outheis-0.2.0/src/outheis/core/queue.py +372 -0
  60. outheis-0.2.0/src/outheis/core/schema.py +216 -0
  61. outheis-0.2.0/src/outheis/core/snowflake.py +109 -0
  62. outheis-0.2.0/src/outheis/core/tokens.py +193 -0
  63. outheis-0.2.0/src/outheis/core/tools.py +111 -0
  64. outheis-0.2.0/src/outheis/core/vault.py +210 -0
  65. outheis-0.2.0/src/outheis/dispatcher/__init__.py +31 -0
  66. outheis-0.2.0/src/outheis/dispatcher/daemon.py +1469 -0
  67. outheis-0.2.0/src/outheis/dispatcher/lifecycle.py +106 -0
  68. outheis-0.2.0/src/outheis/dispatcher/lock.py +367 -0
  69. outheis-0.2.0/src/outheis/dispatcher/router.py +66 -0
  70. outheis-0.2.0/src/outheis/dispatcher/watcher.py +127 -0
  71. outheis-0.2.0/src/outheis/transport/__init__.py +26 -0
  72. outheis-0.2.0/src/outheis/transport/base.py +41 -0
  73. outheis-0.2.0/src/outheis/transport/cli.py +142 -0
  74. outheis-0.2.0/src/outheis/transport/signal.py +378 -0
  75. outheis-0.2.0/src/outheis/transport/signal_rpc.py +250 -0
  76. outheis-0.2.0/src/outheis/webui/__init__.py +0 -0
  77. outheis-0.2.0/src/outheis/webui/app.js +2060 -0
  78. outheis-0.2.0/src/outheis/webui/assets/apple-touch-icon.png +0 -0
  79. outheis-0.2.0/src/outheis/webui/assets/favicon-96x96.png +0 -0
  80. outheis-0.2.0/src/outheis/webui/assets/favicon.ico +0 -0
  81. outheis-0.2.0/src/outheis/webui/assets/favicon.svg +5 -0
  82. outheis-0.2.0/src/outheis/webui/assets/fonts/lexendgx.ttf +0 -0
  83. outheis-0.2.0/src/outheis/webui/assets/fonts/lexendgx.woff2 +0 -0
  84. outheis-0.2.0/src/outheis/webui/assets/logo.png +0 -0
  85. outheis-0.2.0/src/outheis/webui/assets/logo.svg +9 -0
  86. outheis-0.2.0/src/outheis/webui/assets/site.webmanifest +21 -0
  87. outheis-0.2.0/src/outheis/webui/assets/web-app-manifest-192x192.png +0 -0
  88. outheis-0.2.0/src/outheis/webui/assets/web-app-manifest-512x512.png +0 -0
  89. outheis-0.2.0/src/outheis/webui/editor.js +225 -0
  90. outheis-0.2.0/src/outheis/webui/index.html +62 -0
  91. outheis-0.2.0/src/outheis/webui/server.py +931 -0
  92. outheis-0.2.0/src/outheis/webui/style.css +905 -0
  93. outheis-0.2.0/tests/__init__.py +1 -0
  94. outheis-0.2.0/tests/fixtures/vault/.index.jsonl +8 -0
  95. outheis-0.2.0/tests/fixtures/vault/Agenda/Daily.md +21 -0
  96. outheis-0.2.0/tests/fixtures/vault/Agenda/Exchange.md +27 -0
  97. outheis-0.2.0/tests/fixtures/vault/Agenda/Inbox.md +23 -0
  98. outheis-0.2.0/tests/fixtures/vault/family/family.md +33 -0
  99. outheis-0.2.0/tests/fixtures/vault/family/kids.md +52 -0
  100. outheis-0.2.0/tests/fixtures/vault/health/medical.md +29 -0
  101. outheis-0.2.0/tests/fixtures/vault/health/running.md +30 -0
  102. outheis-0.2.0/tests/fixtures/vault/notes/mobile-sync-research.md +49 -0
  103. outheis-0.2.0/tests/fixtures/vault/notes/reading-list.md +21 -0
  104. outheis-0.2.0/tests/fixtures/vault/personal/finances.md +37 -0
  105. outheis-0.2.0/tests/fixtures/vault/personal/hobbies.md +32 -0
  106. outheis-0.2.0/tests/fixtures/vault/personal/home.md +36 -0
  107. outheis-0.2.0/tests/fixtures/vault/personal/travel.md +29 -0
  108. outheis-0.2.0/tests/fixtures/vault/projects/alpha.md +43 -0
  109. outheis-0.2.0/tests/fixtures/vault/projects/website-refresh.md +25 -0
  110. outheis-0.2.0/tests/fixtures/vault/references/api-auth.md +45 -0
  111. outheis-0.2.0/tests/test_agenda_comment_on_item.py +195 -0
  112. outheis-0.2.0/tests/test_agenda_generate_backlog.py +149 -0
  113. outheis-0.2.0/tests/test_agenda_parse_exchange.py +184 -0
  114. outheis-0.2.0/tests/test_agenda_propose_memory.py +153 -0
  115. outheis-0.2.0/tests/test_agenda_route_exchange.py +156 -0
  116. outheis-0.2.0/tests/test_atomic_write.py +94 -0
  117. outheis-0.2.0/tests/test_backlog_recovery.py +146 -0
  118. outheis-0.2.0/tests/test_billing_failsafe.py +157 -0
  119. outheis-0.2.0/tests/test_code_review_diff.py +187 -0
  120. outheis-0.2.0/tests/test_config_example.py +146 -0
  121. outheis-0.2.0/tests/test_data_agent.py +6 -0
  122. outheis-0.2.0/tests/test_data_create_shadow.py +202 -0
  123. outheis-0.2.0/tests/test_data_extract_chronoitems.py +124 -0
  124. outheis-0.2.0/tests/test_dispatcher_route_message.py +107 -0
  125. outheis-0.2.0/tests/test_dispatcher_slot_guard.py +170 -0
  126. outheis-0.2.0/tests/test_index.py +165 -0
  127. outheis-0.2.0/tests/test_integration.py +148 -0
  128. outheis-0.2.0/tests/test_message.py +77 -0
  129. outheis-0.2.0/tests/test_no_inline_i18n.py +76 -0
  130. outheis-0.2.0/tests/test_pattern_migrate_extract.py +146 -0
  131. outheis-0.2.0/tests/test_pattern_migrate_integrate.py +229 -0
  132. outheis-0.2.0/tests/test_queue.py +77 -0
  133. outheis-0.2.0/tests/test_relay_parse_exchange.py +122 -0
  134. outheis-0.2.0/tests/test_relay_register_signal.py +102 -0
  135. outheis-0.2.0/tests/test_relay_session_context.py +177 -0
  136. outheis-0.2.0/tests/test_relay_signal_format.py +90 -0
  137. outheis-0.2.0/tests/test_router.py +5 -0
  138. outheis-0.2.0/tests/test_schema.py +91 -0
  139. outheis-0.2.0/tests/test_signal_watcher.py +136 -0
  140. outheis-0.2.0/tools/test_agent_capability.py +719 -0
  141. outheis-0.2.0/tools/test_ollama_tool_use.py +236 -0
  142. outheis-0.2.0/tools/test_pattern_agent.py +698 -0
  143. outheis-0.2.0/tools/test_zeno_quality.py +408 -0
  144. outheis-0.2.0/webui/app.js +869 -0
  145. outheis-0.2.0/webui/assets/logo.png +0 -0
  146. outheis-0.2.0/webui/assets/logo.svg +9 -0
  147. outheis-0.2.0/webui/editor.js +194 -0
  148. outheis-0.2.0/webui/index.html +60 -0
  149. outheis-0.2.0/webui/server.py +325 -0
  150. outheis-0.2.0/webui/style.css +589 -0
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: "⛵️ User Story"
3
+ about: Suggest an idea for this project
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Is your feature request related to a problem? Please describe.**
11
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12
+
13
+ **Describe the solution you'd like**
14
+ A clear and concise description of what you want to happen.
15
+
16
+ **Describe alternatives you've considered**
17
+ A clear and concise description of any alternative solutions or features you've considered.
18
+
19
+ **Additional context**
20
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: "\U0001F479Bug"
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1. Go to '...'
16
+ 2. Click on '....'
17
+ 3. Scroll down to '....'
18
+ 4. See error
19
+
20
+ **Expected behavior**
21
+ A clear and concise description of what you expected to happen.
22
+
23
+ **Screenshots**
24
+ If applicable, add screenshots to help explain your problem.
25
+
26
+ **Desktop (please complete the following information):**
27
+ - OS: [e.g. iOS]
28
+ - Browser [e.g. chrome, safari]
29
+ - Version [e.g. 22]
30
+
31
+ **Smartphone (please complete the following information):**
32
+ - Device: [e.g. iPhone6]
33
+ - OS: [e.g. iOS8.1]
34
+ - Browser [e.g. stock browser, safari]
35
+ - Version [e.g. 22]
36
+
37
+ **Additional context**
38
+ Add any other context about the problem here.
@@ -0,0 +1,38 @@
1
+ name: Deploy Redirect
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths: ['docs/**']
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
+ jobs:
19
+ deploy:
20
+ environment:
21
+ name: github-pages
22
+ url: ${{ steps.deployment.outputs.page_url }}
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - name: Checkout
26
+ uses: actions/checkout@v4
27
+
28
+ - name: Setup Pages
29
+ uses: actions/configure-pages@v5
30
+
31
+ - name: Upload artifact
32
+ uses: actions/upload-pages-artifact@v3
33
+ with:
34
+ path: docs
35
+
36
+ - name: Deploy to GitHub Pages
37
+ id: deployment
38
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,69 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+ inputs:
9
+ target:
10
+ description: "Publish target"
11
+ required: true
12
+ default: "testpypi"
13
+ type: choice
14
+ options:
15
+ - testpypi
16
+ - pypi
17
+
18
+ jobs:
19
+ build:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+
24
+ - uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.12"
27
+
28
+ - name: Install build
29
+ run: pip install build
30
+
31
+ - name: Build wheel and sdist
32
+ run: python -m build
33
+
34
+ - uses: actions/upload-artifact@v4
35
+ with:
36
+ name: dist
37
+ path: dist/
38
+
39
+ publish-testpypi:
40
+ needs: build
41
+ runs-on: ubuntu-latest
42
+ if: github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'testpypi'
43
+ environment: testpypi
44
+ permissions:
45
+ id-token: write
46
+ steps:
47
+ - uses: actions/download-artifact@v4
48
+ with:
49
+ name: dist
50
+ path: dist/
51
+
52
+ - uses: pypa/gh-action-pypi-publish@release/v1
53
+ with:
54
+ repository-url: https://test.pypi.org/legacy/
55
+
56
+ publish-pypi:
57
+ needs: build
58
+ runs-on: ubuntu-latest
59
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
60
+ environment: pypi
61
+ permissions:
62
+ id-token: write
63
+ steps:
64
+ - uses: actions/download-artifact@v4
65
+ with:
66
+ name: dist
67
+ path: dist/
68
+
69
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,65 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ matrix:
14
+ os: [ubuntu-latest, macos-latest]
15
+ python-version: ["3.11", "3.12"]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Set up Python ${{ matrix.python-version }}
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: ${{ matrix.python-version }}
24
+
25
+ - name: Install dependencies
26
+ run: |
27
+ python -m pip install --upgrade pip
28
+ pip install -e ".[dev]"
29
+
30
+ - name: Lint with ruff
31
+ run: |
32
+ ruff check src/ tests/
33
+
34
+ - name: Type check with mypy
35
+ run: |
36
+ mypy src/outheis --ignore-missing-imports
37
+ continue-on-error: true # Strict typing comes later
38
+
39
+ - name: Run unit tests
40
+ run: |
41
+ pytest tests/ -v -m "not integration" --ignore=tests/test_integration.py
42
+
43
+ integration:
44
+ runs-on: macos-latest
45
+ needs: test
46
+ if: github.event_name == 'push' # Only on push, not PR
47
+
48
+ steps:
49
+ - uses: actions/checkout@v4
50
+
51
+ - name: Set up Python 3.12
52
+ uses: actions/setup-python@v5
53
+ with:
54
+ python-version: "3.12"
55
+
56
+ - name: Install dependencies
57
+ run: |
58
+ python -m pip install --upgrade pip
59
+ pip install -e ".[dev,watch]"
60
+
61
+ - name: Run integration tests
62
+ env:
63
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
64
+ run: |
65
+ pytest tests/test_integration.py -v --timeout=60
@@ -0,0 +1,55 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Virtual environments
24
+ .venv/
25
+ venv/
26
+ ENV/
27
+
28
+ # IDE
29
+ .idea/
30
+ .vscode/
31
+ *.swp
32
+ *.swo
33
+ *~
34
+
35
+ # Testing
36
+ .pytest_cache/
37
+ .coverage
38
+ htmlcov/
39
+ .tox/
40
+ .nox/
41
+
42
+ # mypy
43
+ .mypy_cache/
44
+ .dmypy.json
45
+ dmypy.json
46
+
47
+ # ruff
48
+ .ruff_cache/
49
+
50
+ # OS
51
+ .DS_Store
52
+ Thumbs.db
53
+
54
+ # outheis runtime (never commit user data)
55
+ ~/.outheis/