sayane 1.0.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.
Files changed (227) hide show
  1. sayane-1.0.3/.github/ISSUE_TEMPLATE/bug_report.md +90 -0
  2. sayane-1.0.3/.github/ISSUE_TEMPLATE/config.yml +5 -0
  3. sayane-1.0.3/.github/ISSUE_TEMPLATE/docs_design.md +89 -0
  4. sayane-1.0.3/.github/ISSUE_TEMPLATE/feature_request.md +105 -0
  5. sayane-1.0.3/.github/PULL_REQUEST_TEMPLATE.md +172 -0
  6. sayane-1.0.3/.github/workflows/ci.yml +68 -0
  7. sayane-1.0.3/.github/workflows/extension-e2e.yml +50 -0
  8. sayane-1.0.3/.github/workflows/publish-pypi.yml +59 -0
  9. sayane-1.0.3/.gitignore +223 -0
  10. sayane-1.0.3/CHANGELOG.md +77 -0
  11. sayane-1.0.3/CONTRIBUTING.md +166 -0
  12. sayane-1.0.3/CONTRIBUTING_ja.md +170 -0
  13. sayane-1.0.3/LICENSE +201 -0
  14. sayane-1.0.3/PKG-INFO +126 -0
  15. sayane-1.0.3/README.md +91 -0
  16. sayane-1.0.3/README_ja.md +414 -0
  17. sayane-1.0.3/docs/acceptance-manual-only.md +114 -0
  18. sayane-1.0.3/docs/acceptance-spec.md +392 -0
  19. sayane-1.0.3/docs/architecture.md +132 -0
  20. sayane-1.0.3/docs/bridge-manual.md +176 -0
  21. sayane-1.0.3/docs/ci.md +72 -0
  22. sayane-1.0.3/docs/cli-acceptance-test.md +386 -0
  23. sayane-1.0.3/docs/cli-chrome-extension.md +235 -0
  24. sayane-1.0.3/docs/cli-manual.md +471 -0
  25. sayane-1.0.3/docs/confidentiality-policy-schema.md +41 -0
  26. sayane-1.0.3/docs/context-layering-design.md +233 -0
  27. sayane-1.0.3/docs/development-principles.md +281 -0
  28. sayane-1.0.3/docs/dogfood-walkthrough.md +136 -0
  29. sayane-1.0.3/docs/evaluation-lineage.md +197 -0
  30. sayane-1.0.3/docs/evaluation-manual.md +264 -0
  31. sayane-1.0.3/docs/extension-acceptance-test.md +381 -0
  32. sayane-1.0.3/docs/extension-e2e.md +52 -0
  33. sayane-1.0.3/docs/extension-manual.md +99 -0
  34. sayane-1.0.3/docs/extraction-pipeline.md +174 -0
  35. sayane-1.0.3/docs/getting-started.md +193 -0
  36. sayane-1.0.3/docs/index.md +97 -0
  37. sayane-1.0.3/docs/install.md +227 -0
  38. sayane-1.0.3/docs/mcp-integration.md +138 -0
  39. sayane-1.0.3/docs/mcp-manual.md +104 -0
  40. sayane-1.0.3/docs/mvp-scope.md +135 -0
  41. sayane-1.0.3/docs/profile-ir.md +181 -0
  42. sayane-1.0.3/docs/roadmap.md +310 -0
  43. sayane-1.0.3/docs/security.md +213 -0
  44. sayane-1.0.3/docs/spec/kotonoha-generative-audit.md +233 -0
  45. sayane-1.0.3/docs/storage-backend.md +80 -0
  46. sayane-1.0.3/docs/storage-manual.md +186 -0
  47. sayane-1.0.3/docs/t-rde-execution-prompt.md +569 -0
  48. sayane-1.0.3/examples/README.md +12 -0
  49. sayane-1.0.3/examples/compiled/README.md +13 -0
  50. sayane-1.0.3/examples/compiled/chatgpt.json +12 -0
  51. sayane-1.0.3/examples/compiled/claude.json +9 -0
  52. sayane-1.0.3/examples/confidentiality/default.policy.yaml +53 -0
  53. sayane-1.0.3/examples/judge.yaml.example +11 -0
  54. sayane-1.0.3/examples/profiles/context/AI_HANDOFF.md +21 -0
  55. sayane-1.0.3/examples/profiles/context/MyContext.md +11 -0
  56. sayane-1.0.3/examples/profiles/context/README.md +5 -0
  57. sayane-1.0.3/examples/profiles/context/identity.md +7 -0
  58. sayane-1.0.3/examples/profiles/context/interaction.md +7 -0
  59. sayane-1.0.3/examples/profiles/context/notes/unverified.md +6 -0
  60. sayane-1.0.3/examples/profiles/context/projects.md +4 -0
  61. sayane-1.0.3/examples/profiles/context/theory.md +6 -0
  62. sayane-1.0.3/examples/profiles/minimal.yaml +40 -0
  63. sayane-1.0.3/extension/.gitignore +6 -0
  64. sayane-1.0.3/extension/README.md +64 -0
  65. sayane-1.0.3/extension/e2e/.e2e-env.json +5 -0
  66. sayane-1.0.3/extension/e2e/fixtures/chatgpt.html +13 -0
  67. sayane-1.0.3/extension/e2e/fixtures/claude.html +13 -0
  68. sayane-1.0.3/extension/e2e/global-setup.ts +66 -0
  69. sayane-1.0.3/extension/e2e/global-teardown.ts +15 -0
  70. sayane-1.0.3/extension/e2e/helpers/extension.ts +182 -0
  71. sayane-1.0.3/extension/e2e/insert-chatgpt.spec.ts +47 -0
  72. sayane-1.0.3/extension/e2e/insert-claude.spec.ts +47 -0
  73. sayane-1.0.3/extension/e2e/setup-bridge.py +43 -0
  74. sayane-1.0.3/extension/e2e/site-mismatch.spec.ts +29 -0
  75. sayane-1.0.3/extension/locale/en.json +61 -0
  76. sayane-1.0.3/extension/locale/ja.json +61 -0
  77. sayane-1.0.3/extension/manifest.json +25 -0
  78. sayane-1.0.3/extension/options.html +66 -0
  79. sayane-1.0.3/extension/package-lock.json +129 -0
  80. sayane-1.0.3/extension/package.json +18 -0
  81. sayane-1.0.3/extension/playwright.config.ts +17 -0
  82. sayane-1.0.3/extension/popup.html +123 -0
  83. sayane-1.0.3/extension/src/background.ts +125 -0
  84. sayane-1.0.3/extension/src/bridge-client.ts +185 -0
  85. sayane-1.0.3/extension/src/config.ts +40 -0
  86. sayane-1.0.3/extension/src/content-script-client.ts +133 -0
  87. sayane-1.0.3/extension/src/content.ts +59 -0
  88. sayane-1.0.3/extension/src/i18n.ts +86 -0
  89. sayane-1.0.3/extension/src/options.ts +101 -0
  90. sayane-1.0.3/extension/src/popup.ts +321 -0
  91. sayane-1.0.3/extension/src/providers/chatgpt.ts +28 -0
  92. sayane-1.0.3/extension/src/providers/claude.ts +26 -0
  93. sayane-1.0.3/extension/src/providers/deepseek.ts +25 -0
  94. sayane-1.0.3/extension/src/providers/gemini.ts +26 -0
  95. sayane-1.0.3/extension/src/providers/local-custom.ts +22 -0
  96. sayane-1.0.3/extension/src/providers/local-host.ts +56 -0
  97. sayane-1.0.3/extension/src/providers/local-openwebui.ts +25 -0
  98. sayane-1.0.3/extension/src/providers/registry.ts +128 -0
  99. sayane-1.0.3/extension/src/providers/types.ts +37 -0
  100. sayane-1.0.3/extension/src/sites/chatgpt.ts +2 -0
  101. sayane-1.0.3/extension/src/sites/claude.ts +2 -0
  102. sayane-1.0.3/extension/src/sites/registry.ts +6 -0
  103. sayane-1.0.3/extension/src/sites/types.ts +2 -0
  104. sayane-1.0.3/extension/src/types.ts +91 -0
  105. sayane-1.0.3/extension/test-results/.last-run.json +4 -0
  106. sayane-1.0.3/extension/tsconfig.json +15 -0
  107. sayane-1.0.3/packaging/pypi/README.md +83 -0
  108. sayane-1.0.3/packaging/scoop/README.md +36 -0
  109. sayane-1.0.3/packaging/scoop/sayane.json +28 -0
  110. sayane-1.0.3/packaging/winget/README.md +39 -0
  111. sayane-1.0.3/packaging/winget/zyx-corporation.sayane.yaml +45 -0
  112. sayane-1.0.3/pyproject.toml +73 -0
  113. sayane-1.0.3/schemas/README.md +13 -0
  114. sayane-1.0.3/schemas/prompt-ir.schema.json +42 -0
  115. sayane-1.0.3/schemas/sayane-confidentiality-policy.schema.json +139 -0
  116. sayane-1.0.3/schemas/sayane-profile.schema.json +113 -0
  117. sayane-1.0.3/scripts/build-wheel.sh +13 -0
  118. sayane-1.0.3/scripts/close-completed-issues.sh +38 -0
  119. sayane-1.0.3/scripts/dogfood-capture-eval.sh +35 -0
  120. sayane-1.0.3/scripts/install.ps1 +148 -0
  121. sayane-1.0.3/scripts/install.sh +171 -0
  122. sayane-1.0.3/scripts/post-release-v1.0.2.sh +10 -0
  123. sayane-1.0.3/scripts/post-release-v1.0.3.sh +25 -0
  124. sayane-1.0.3/scripts/publish-github-release-v1.0.2.sh +29 -0
  125. sayane-1.0.3/scripts/release-v1.0.2-notes.md +32 -0
  126. sayane-1.0.3/scripts/release-v1.0.3-notes.md +22 -0
  127. sayane-1.0.3/src/sayane/__init__.py +3 -0
  128. sayane-1.0.3/src/sayane/adapters/__init__.py +1 -0
  129. sayane-1.0.3/src/sayane/adapters/base.py +38 -0
  130. sayane-1.0.3/src/sayane/adapters/chatgpt.py +26 -0
  131. sayane-1.0.3/src/sayane/adapters/claude.py +25 -0
  132. sayane-1.0.3/src/sayane/adapters/deepseek.py +26 -0
  133. sayane-1.0.3/src/sayane/adapters/factory.py +32 -0
  134. sayane-1.0.3/src/sayane/adapters/gemini.py +28 -0
  135. sayane-1.0.3/src/sayane/adapters/local_openwebui.py +30 -0
  136. sayane-1.0.3/src/sayane/bridge/__init__.py +6 -0
  137. sayane-1.0.3/src/sayane/bridge/app.py +169 -0
  138. sayane-1.0.3/src/sayane/bridge/auth.py +40 -0
  139. sayane-1.0.3/src/sayane/bridge/candidate_api.py +81 -0
  140. sayane-1.0.3/src/sayane/bridge/capture_store.py +26 -0
  141. sayane-1.0.3/src/sayane/bridge/config.py +27 -0
  142. sayane-1.0.3/src/sayane/bridge/models.py +53 -0
  143. sayane-1.0.3/src/sayane/bridge/service.py +63 -0
  144. sayane-1.0.3/src/sayane/cli/__init__.py +1 -0
  145. sayane-1.0.3/src/sayane/cli/app.py +711 -0
  146. sayane-1.0.3/src/sayane/cli/help_cmd.py +128 -0
  147. sayane-1.0.3/src/sayane/cli/i18n.py +97 -0
  148. sayane-1.0.3/src/sayane/cli/locale/__init__.py +1 -0
  149. sayane-1.0.3/src/sayane/cli/locale/en.json +65 -0
  150. sayane-1.0.3/src/sayane/cli/locale/ja.json +65 -0
  151. sayane-1.0.3/src/sayane/cli/main.py +18 -0
  152. sayane-1.0.3/src/sayane/cli/paths.py +24 -0
  153. sayane-1.0.3/src/sayane/cli/plugins.py +20 -0
  154. sayane-1.0.3/src/sayane/core/__init__.py +1 -0
  155. sayane-1.0.3/src/sayane/core/builder.py +113 -0
  156. sayane-1.0.3/src/sayane/core/candidate.py +79 -0
  157. sayane-1.0.3/src/sayane/core/loader.py +22 -0
  158. sayane-1.0.3/src/sayane/core/models.py +87 -0
  159. sayane-1.0.3/src/sayane/core/profile_quality.py +71 -0
  160. sayane-1.0.3/src/sayane/evaluators/__init__.py +1 -0
  161. sayane-1.0.3/src/sayane/evaluators/diff.py +51 -0
  162. sayane-1.0.3/src/sayane/evaluators/heuristic_match.py +82 -0
  163. sayane-1.0.3/src/sayane/evaluators/judge_config.py +57 -0
  164. sayane-1.0.3/src/sayane/evaluators/llm_judge.py +146 -0
  165. sayane-1.0.3/src/sayane/evaluators/merge.py +88 -0
  166. sayane-1.0.3/src/sayane/evaluators/proposal.py +82 -0
  167. sayane-1.0.3/src/sayane/evaluators/rde.py +103 -0
  168. sayane-1.0.3/src/sayane/evaluators/rde_merge.py +34 -0
  169. sayane-1.0.3/src/sayane/evaluators/sections.py +98 -0
  170. sayane-1.0.3/src/sayane/evaluators/service.py +164 -0
  171. sayane-1.0.3/src/sayane/evaluators/uib.py +39 -0
  172. sayane-1.0.3/src/sayane/mcp/__init__.py +6 -0
  173. sayane-1.0.3/src/sayane/mcp/operations.py +130 -0
  174. sayane-1.0.3/src/sayane/mcp/server.py +139 -0
  175. sayane-1.0.3/src/sayane/plugins/__init__.py +13 -0
  176. sayane-1.0.3/src/sayane/plugins/hooks.py +47 -0
  177. sayane-1.0.3/src/sayane/schema_paths.py +10 -0
  178. sayane-1.0.3/src/sayane/storage/__init__.py +45 -0
  179. sayane-1.0.3/src/sayane/storage/backends/__init__.py +1 -0
  180. sayane-1.0.3/src/sayane/storage/backends/filesystem.py +43 -0
  181. sayane-1.0.3/src/sayane/storage/base.py +77 -0
  182. sayane-1.0.3/src/sayane/storage/candidates.py +97 -0
  183. sayane-1.0.3/src/sayane/storage/config.py +77 -0
  184. sayane-1.0.3/src/sayane/storage/context_index.py +67 -0
  185. sayane-1.0.3/src/sayane/storage/factory.py +69 -0
  186. sayane-1.0.3/src/sayane/storage/filesystem.py +83 -0
  187. sayane-1.0.3/src/sayane/storage/git_integration.py +86 -0
  188. sayane-1.0.3/src/sayane/storage/lineage.py +27 -0
  189. sayane-1.0.3/src/sayane/storage/lineage_store.py +39 -0
  190. sayane-1.0.3/src/sayane/storage/markdown.py +18 -0
  191. sayane-1.0.3/src/sayane/storage/obsidian.py +102 -0
  192. sayane-1.0.3/src/sayane/storage/registry.py +92 -0
  193. sayane-1.0.3/src/sayane/strategies/__init__.py +1 -0
  194. sayane-1.0.3/tests/conftest.py +22 -0
  195. sayane-1.0.3/tests/test_acceptance_cli.py +240 -0
  196. sayane-1.0.3/tests/test_acceptance_coverage.py +42 -0
  197. sayane-1.0.3/tests/test_adapters.py +90 -0
  198. sayane-1.0.3/tests/test_bridge_api.py +252 -0
  199. sayane-1.0.3/tests/test_builder.py +36 -0
  200. sayane-1.0.3/tests/test_candidate_cli.py +32 -0
  201. sayane-1.0.3/tests/test_candidate_flow.py +55 -0
  202. sayane-1.0.3/tests/test_capture_cli.py +60 -0
  203. sayane-1.0.3/tests/test_cli.py +73 -0
  204. sayane-1.0.3/tests/test_cli_help.py +39 -0
  205. sayane-1.0.3/tests/test_cli_i18n.py +30 -0
  206. sayane-1.0.3/tests/test_cli_locale_resolve.py +37 -0
  207. sayane-1.0.3/tests/test_cli_plugins.py +18 -0
  208. sayane-1.0.3/tests/test_confidentiality_policy_schema.py +66 -0
  209. sayane-1.0.3/tests/test_context_index.py +46 -0
  210. sayane-1.0.3/tests/test_critical_merge.py +58 -0
  211. sayane-1.0.3/tests/test_heuristic_match.py +121 -0
  212. sayane-1.0.3/tests/test_llm_judge.py +138 -0
  213. sayane-1.0.3/tests/test_markdown.py +6 -0
  214. sayane-1.0.3/tests/test_mcp_cli.py +55 -0
  215. sayane-1.0.3/tests/test_mcp_operations.py +100 -0
  216. sayane-1.0.3/tests/test_models.py +44 -0
  217. sayane-1.0.3/tests/test_obsidian.py +38 -0
  218. sayane-1.0.3/tests/test_obsidian_vault_env.py +47 -0
  219. sayane-1.0.3/tests/test_package.py +20 -0
  220. sayane-1.0.3/tests/test_profile_quality.py +34 -0
  221. sayane-1.0.3/tests/test_rde.py +32 -0
  222. sayane-1.0.3/tests/test_rde_merge.py +15 -0
  223. sayane-1.0.3/tests/test_schemas.py +32 -0
  224. sayane-1.0.3/tests/test_sections.py +40 -0
  225. sayane-1.0.3/tests/test_storage_backend.py +178 -0
  226. sayane-1.0.3/tests/test_storage_cli.py +49 -0
  227. sayane-1.0.3/tests/test_storage_git.py +62 -0
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: Bug report
3
+ description: Report incorrect behavior, regression, or security/privacy issue
4
+ title: "[Bug]: "
5
+ labels: ["type: bug", "needs: triage"]
6
+ assignees: []
7
+ ---
8
+
9
+ ## 概要
10
+
11
+ 何が起きたかを簡潔に書く。
12
+
13
+ ## 再現手順
14
+
15
+ 1.
16
+ 2.
17
+ 3.
18
+
19
+ ## 期待される動作
20
+
21
+ 本来どう動くべきかを書く。
22
+
23
+ ## 実際の動作
24
+
25
+ 実際にどう動いたかを書く。
26
+
27
+ ## 影響範囲
28
+
29
+ - [ ] Core
30
+ - [ ] CLI
31
+ - [ ] Local Bridge
32
+ - [ ] MCP Server
33
+ - [ ] Chrome Extension
34
+ - [ ] Adapter
35
+ - [ ] Evaluator
36
+ - [ ] Storage
37
+ - [ ] Documentation
38
+ - [ ] Security/privacy
39
+
40
+ ## 環境
41
+
42
+ ```text
43
+ OS:
44
+ Python:
45
+ Node:
46
+ Browser:
47
+ Sayane version / commit:
48
+ ```
49
+
50
+ ## ログ / 出力
51
+
52
+ 機微情報、token、API key、private keyを含めないこと。
53
+
54
+ ```text
55
+ ここにログを貼る
56
+ ```
57
+
58
+ ## RDE観点
59
+
60
+ ### 保存された要素
61
+
62
+ 修正後も保存すべき仕様・意味・挙動を書く。
63
+
64
+ ### 疑わしい逸脱
65
+
66
+ この不具合がどのような意味変化、Profile汚染、policy逸脱、誤変換を引き起こし得るかを書く。
67
+
68
+ ### 重大な歪曲の可能性
69
+
70
+ ユーザーの人格的文脈、values、policy、identityを誤って扱う可能性がある場合は明記する。
71
+
72
+ ## テスト方針
73
+
74
+ この不具合を再発防止するためのテストを書く。
75
+
76
+ - [ ] Reproduction test
77
+ - [ ] Regression test
78
+ - [ ] Contract test
79
+ - [ ] Security/privacy test
80
+
81
+ ## Security / Privacy確認
82
+
83
+ - [ ] secretがログや出力に含まれていない
84
+ - [ ] Profile本体が意図せず変更されていない
85
+ - [ ] Candidate Updateが承認なしにmergeされていない
86
+ - [ ] localhost / MCP / Extension境界に影響がない
87
+
88
+ ## 追加情報
89
+
90
+ 補足があれば書く。
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Sayane documentation
4
+ url: https://github.com/zyx-corporation/sayane/tree/main/docs
5
+ about: Please read the design documents before opening a broad architectural issue.
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: Docs / design change
3
+ description: Propose a documentation, architecture, or design principle change
4
+ title: "[Docs/Design]: "
5
+ labels: ["type: docs", "type: design", "needs: triage"]
6
+ assignees: []
7
+ ---
8
+
9
+ ## 目的
10
+
11
+ この設計変更・文書変更で達成したいことを書く。
12
+
13
+ ## 背景
14
+
15
+ 変更が必要になった理由を書く。
16
+
17
+ 関連文書:
18
+
19
+ - `docs/architecture.md`
20
+ - `docs/profile-ir.md`
21
+ - `docs/mvp-scope.md`
22
+ - `docs/security.md`
23
+ - `docs/mcp-integration.md`
24
+ - `docs/extraction-pipeline.md`
25
+ - `docs/evaluation-lineage.md`
26
+ - `docs/development-principles.md`
27
+ - `docs/roadmap.md`
28
+
29
+ ## 対象文書 / 対象設計
30
+
31
+ 変更対象を書く。
32
+
33
+ - [ ] README.md
34
+ - [ ] README_ja.md
35
+ - [ ] docs/architecture.md
36
+ - [ ] docs/profile-ir.md
37
+ - [ ] docs/mvp-scope.md
38
+ - [ ] docs/security.md
39
+ - [ ] docs/mcp-integration.md
40
+ - [ ] docs/extraction-pipeline.md
41
+ - [ ] docs/evaluation-lineage.md
42
+ - [ ] docs/development-principles.md
43
+ - [ ] docs/roadmap.md
44
+ - [ ] Other:
45
+
46
+ ## 提案内容
47
+
48
+ 変更案を書く。
49
+
50
+ ## 非対象範囲
51
+
52
+ 今回扱わない内容を書く。
53
+
54
+ ## RDE差異検証
55
+
56
+ ### 保存された要素
57
+
58
+ 元の議論・意図・設計思想のうち保存するものを書く。
59
+
60
+ ### 変換された要素
61
+
62
+ 表現や構造がどう変わるかを書く。
63
+
64
+ ### 補完された要素
65
+
66
+ 新たに追加する前提、説明、制約を書く。
67
+
68
+ ### 未解決の要素
69
+
70
+ この変更でも残る問題を書く。
71
+
72
+ ### 逸脱リスク
73
+
74
+ 強すぎる主張、未検証内容、射程の縮小、実装都合の理論化などのリスクを書く。
75
+
76
+ ## 受け入れ条件
77
+
78
+ - [ ] 文書リンクが壊れていない
79
+ - [ ] 用語が既存docsと整合している
80
+ - [ ] 過剰主張を避けている
81
+ - [ ] 必要ならREADME / docs/index.mdへリンクを追加している
82
+ - [ ] RDE観点が確認されている
83
+
84
+ ## テスト / 確認方針
85
+
86
+ - [ ] Markdown lint
87
+ - [ ] リンク確認
88
+ - [ ] 既存ドキュメントとの整合性確認
89
+ - [ ] RDEレビュー
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: Feature request
3
+ description: Propose a new Sayane feature or capability
4
+ title: "[Feature]: "
5
+ labels: ["type: feature", "needs: triage"]
6
+ assignees: []
7
+ ---
8
+
9
+ ## 目的
10
+
11
+ このIssueで実現したいことを簡潔に書く。
12
+
13
+ ## 背景
14
+
15
+ なぜ必要か。どの設計文書、利用シナリオ、Phaseに関係するかを書く。
16
+
17
+ 関連文書:
18
+
19
+ - `docs/roadmap.md`
20
+ - `docs/mvp-scope.md`
21
+ - `docs/development-principles.md`
22
+
23
+ ## 対象範囲
24
+
25
+ このIssueで扱う範囲を書く。
26
+
27
+ - [ ] Core
28
+ - [ ] CLI
29
+ - [ ] Local Bridge
30
+ - [ ] MCP Server
31
+ - [ ] Chrome Extension
32
+ - [ ] Adapter
33
+ - [ ] Evaluator
34
+ - [ ] Storage
35
+ - [ ] Documentation
36
+
37
+ ## 非対象範囲
38
+
39
+ このIssueでは扱わないことを書く。
40
+
41
+ ## 提案内容
42
+
43
+ 機能案、API案、CLI案、データ構造案などを書く。
44
+
45
+ ```text
46
+ 例:
47
+ sayane compile --target claude
48
+ ```
49
+
50
+ ## 受け入れ条件
51
+
52
+ このIssueを完了とみなす条件を書く。
53
+
54
+ - [ ]
55
+ - [ ]
56
+ - [ ]
57
+
58
+ ## RDE観点
59
+
60
+ ### 保存された要素
61
+
62
+ 元の設計思想・文脈・制約のうち、保存すべきものを書く。
63
+
64
+ ### 許可された変換
65
+
66
+ このIssueで許可される設計・実装上の変換を書く。
67
+
68
+ ### 補完される要素
69
+
70
+ 新たに補完される仕様・実装・文書を書く。
71
+
72
+ ### 未解決の要素
73
+
74
+ このIssueで解決しない問題を書く。
75
+
76
+ ### 逸脱リスク
77
+
78
+ 元の意図から外れる可能性、過剰実装、過剰主張、security/privacyリスクを書く。
79
+
80
+ ## テスト方針
81
+
82
+ TDD/test firstの観点から、先に書くべきテストを書く。
83
+
84
+ - [ ] Unit test
85
+ - [ ] Contract test
86
+ - [ ] Regression test
87
+ - [ ] Security/privacy test
88
+ - [ ] Documentation check
89
+
90
+ ## デザインパターン
91
+
92
+ 適用予定のデザインパターンを書く。
93
+
94
+ - [ ] Adapter
95
+ - [ ] Strategy
96
+ - [ ] Builder
97
+ - [ ] Factory
98
+ - [ ] Decorator
99
+ - [ ] Observer
100
+ - [ ] Repository
101
+ - [ ] Other:
102
+
103
+ ## 依存Issue / 関連Issue
104
+
105
+ -
@@ -0,0 +1,172 @@
1
+ # Pull Request
2
+
3
+ ## 関連Issue
4
+
5
+ Closes #
6
+
7
+ ## 概要
8
+
9
+ このPRで変更した内容を簡潔に書く。
10
+
11
+ ## 変更種別
12
+
13
+ - [ ] feature
14
+ - [ ] bug fix
15
+ - [ ] docs / design
16
+ - [ ] refactor
17
+ - [ ] test
18
+ - [ ] security / privacy
19
+ - [ ] chore
20
+
21
+ ## 対象範囲
22
+
23
+ - [ ] Core
24
+ - [ ] CLI
25
+ - [ ] Local Bridge
26
+ - [ ] MCP Server
27
+ - [ ] Chrome Extension
28
+ - [ ] Adapter
29
+ - [ ] Strategy
30
+ - [ ] Evaluator
31
+ - [ ] Storage
32
+ - [ ] Documentation
33
+ - [ ] CI / tooling
34
+
35
+ ## Branch first 確認
36
+
37
+ - [ ] mainへ直接pushしていない
38
+ - [ ] Issueに対応したbranchで作業している
39
+ - [ ] branch名が目的を表している
40
+
41
+ Branch:
42
+
43
+ ```text
44
+ feature/<issue-number>-<short-name>
45
+ fix/<issue-number>-<short-name>
46
+ docs/<issue-number>-<short-name>
47
+ refactor/<issue-number>-<short-name>
48
+ test/<issue-number>-<short-name>
49
+ ```
50
+
51
+ ## TDD / test first 確認
52
+
53
+ - [ ] 先に失敗するテストを書いた、または既存テストで再現した
54
+ - [ ] 最小実装でテストを通した
55
+ - [ ] refactor後もテストが通る
56
+ - [ ] テスト追加が不要な場合、その理由を下に記載した
57
+
58
+ テスト不要の理由:
59
+
60
+ ```text
61
+
62
+ ```
63
+
64
+ ## 実行したテスト
65
+
66
+ ```bash
67
+ # 実行したコマンドを書く
68
+ ```
69
+
70
+ ## RDEレビュー
71
+
72
+ ### 保存された要素
73
+
74
+ 元Issue、既存設計、既存挙動のうち、保存されたものを書く。
75
+
76
+ ### 許可された変換
77
+
78
+ このPRで許可された仕様・実装・文書上の変換を書く。
79
+
80
+ ### 推論による補完
81
+
82
+ 既存文書やIssueから推論して補完した内容があれば書く。
83
+
84
+ ### 未解決の要素
85
+
86
+ このPRでは解決しない問題を書く。
87
+
88
+ ### 逸脱リスク
89
+
90
+ 以下を確認する。
91
+
92
+ - [ ] 元Issueより強い主張になっていない
93
+ - [ ] 未検証内容を実証済みとして扱っていない
94
+ - [ ] 実装上の便宜を設計思想として正当化していない
95
+ - [ ] Profile / Prompt IR / Lineage の意味を意図せず変えていない
96
+ - [ ] 同一人格の完全再現を示唆していない
97
+ - [ ] 自動mergeや自動Profile更新を導入していない、または明示承認を維持している
98
+
99
+ 補足:
100
+
101
+ ```text
102
+
103
+ ```
104
+
105
+ ## デザインパターン確認
106
+
107
+ このPRで利用・追加・維持したパターンを選ぶ。
108
+
109
+ - [ ] Adapter
110
+ - [ ] Strategy
111
+ - [ ] Builder
112
+ - [ ] Factory
113
+ - [ ] Decorator
114
+ - [ ] Observer
115
+ - [ ] Repository
116
+ - [ ] なし
117
+ - [ ] Other:
118
+
119
+ 設計上の補足:
120
+
121
+ ```text
122
+
123
+ ```
124
+
125
+ ## Security / Privacy確認
126
+
127
+ - [ ] secret、token、API key、private keyを含めていない
128
+ - [ ] ログやテストfixtureに機微情報を含めていない
129
+ - [ ] Local Bridge / MCP Server の認証境界を弱めていない
130
+ - [ ] CORS / Origin / pairing token / read-only mode に悪影響がない
131
+ - [ ] Candidate Updateが承認なしにProfileへmergeされない
132
+ - [ ] Profile、values、policy、identityを危険に上書きしない
133
+ - [ ] 該当なし
134
+
135
+ ## 互換性影響
136
+
137
+ - [ ] 破壊的変更なし
138
+ - [ ] 破壊的変更あり
139
+ - [ ] schema変更あり
140
+ - [ ] CLI変更あり
141
+ - [ ] API変更あり
142
+ - [ ] docs更新済み
143
+
144
+ 破壊的変更・schema変更の説明:
145
+
146
+ ```text
147
+
148
+ ```
149
+
150
+ ## ドキュメント更新
151
+
152
+ - [ ] README.md
153
+ - [ ] README_ja.md
154
+ - [ ] docs/index.md
155
+ - [ ] docs/architecture.md
156
+ - [ ] docs/profile-ir.md
157
+ - [ ] docs/mvp-scope.md
158
+ - [ ] docs/security.md
159
+ - [ ] docs/mcp-integration.md
160
+ - [ ] docs/extraction-pipeline.md
161
+ - [ ] docs/evaluation-lineage.md
162
+ - [ ] docs/development-principles.md
163
+ - [ ] docs/roadmap.md
164
+ - [ ] 更新不要
165
+
166
+ ## レビュアーへの注記
167
+
168
+ 重点的に見てほしい点を書く。
169
+
170
+ ```text
171
+
172
+ ```
@@ -0,0 +1,68 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ python:
11
+ name: Python (lint & test)
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.12"
19
+
20
+ - name: Install package with dev dependencies
21
+ run: pip install -e ".[dev]"
22
+
23
+ - name: Ruff lint
24
+ run: ruff check src tests
25
+
26
+ - name: Ruff format check
27
+ run: ruff format --check src tests
28
+
29
+ - name: Pytest
30
+ run: pytest -v
31
+
32
+ - name: Validate install scripts
33
+ run: bash -n scripts/install.sh
34
+
35
+ - name: Install script smoke test
36
+ env:
37
+ SAYANE_INSTALL_DIR: /tmp/sayane-install-test
38
+ SAYANE_BIN_DIR: /tmp/sayane-install-test/bin
39
+ SAYANE_SOURCE_DIR: ${{ github.workspace }}
40
+ SAYANE_SKIP_INIT: "1"
41
+ SAYANE_YES: "1"
42
+ run: |
43
+ bash scripts/install.sh
44
+ /tmp/sayane-install-test/bin/sayane --version
45
+
46
+ extension:
47
+ name: Extension (typecheck & build)
48
+ runs-on: ubuntu-latest
49
+ defaults:
50
+ run:
51
+ working-directory: extension
52
+ steps:
53
+ - uses: actions/checkout@v4
54
+
55
+ - uses: actions/setup-node@v4
56
+ with:
57
+ node-version: "22"
58
+ cache: npm
59
+ cache-dependency-path: extension/package-lock.json
60
+
61
+ - name: Install dependencies
62
+ run: npm ci
63
+
64
+ - name: Typecheck
65
+ run: npm run typecheck
66
+
67
+ - name: Build
68
+ run: npm run build
@@ -0,0 +1,50 @@
1
+ name: Extension E2E (Playwright)
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ schedule:
6
+ - cron: "0 6 * * 1"
7
+ pull_request:
8
+ branches: [main]
9
+ paths:
10
+ - "extension/**"
11
+ - "src/sayane/bridge/**"
12
+ - "examples/profiles/**"
13
+ - ".github/workflows/extension-e2e.yml"
14
+
15
+ jobs:
16
+ playwright:
17
+ name: Extension DOM insert (Playwright)
18
+ runs-on: ubuntu-latest
19
+ timeout-minutes: 20
20
+ defaults:
21
+ run:
22
+ working-directory: extension
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+
26
+ - uses: actions/setup-python@v5
27
+ with:
28
+ python-version: "3.12"
29
+
30
+ - name: Install Sayane (dev)
31
+ run: pip install -e ".[dev]"
32
+ working-directory: ${{ github.workspace }}
33
+
34
+ - uses: actions/setup-node@v4
35
+ with:
36
+ node-version: "22"
37
+ cache: npm
38
+ cache-dependency-path: extension/package-lock.json
39
+
40
+ - name: Install extension dependencies
41
+ run: npm ci
42
+
43
+ - name: Build extension
44
+ run: npm run build
45
+
46
+ - name: Install Playwright Chromium
47
+ run: npx playwright install --with-deps chromium
48
+
49
+ - name: Run Playwright E2E
50
+ run: npm run test:e2e
@@ -0,0 +1,59 @@
1
+ name: Publish PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ tag:
9
+ description: "Git tag to publish (e.g. v1.0.3)"
10
+ required: true
11
+ default: "v1.0.3"
12
+
13
+ permissions:
14
+ contents: read
15
+
16
+ jobs:
17
+ publish:
18
+ name: Upload to PyPI
19
+ runs-on: ubuntu-latest
20
+ environment:
21
+ name: pypi
22
+ url: https://pypi.org/project/sayane/
23
+ permissions:
24
+ contents: read
25
+ id-token: write
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+ with:
29
+ ref: ${{ github.event.release.tag_name || inputs.tag }}
30
+
31
+ - uses: actions/setup-python@v5
32
+ with:
33
+ python-version: "3.12"
34
+
35
+ - name: Install build tools
36
+ run: pip install build twine
37
+
38
+ - name: Build sdist and wheel
39
+ run: python -m build
40
+
41
+ - name: Check dist
42
+ run: twine check dist/*
43
+
44
+ - name: Verify PyPI credentials configured
45
+ env:
46
+ PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
47
+ run: |
48
+ if [ -n "$PYPI_API_TOKEN" ]; then
49
+ echo "Using PYPI_API_TOKEN from the pypi environment."
50
+ else
51
+ echo "No PYPI_API_TOKEN — attempting PyPI Trusted Publishing (OIDC)."
52
+ echo "Configure at: https://pypi.org/manage/project/sayane/settings/publishing/"
53
+ echo " Owner: zyx-corporation Repo: sayane Workflow: publish-pypi.yml"
54
+ fi
55
+
56
+ - name: Publish to PyPI
57
+ uses: pypa/gh-action-pypi-publish@release/v1
58
+ with:
59
+ password: ${{ secrets.PYPI_API_TOKEN }}