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.
- sayane-1.0.3/.github/ISSUE_TEMPLATE/bug_report.md +90 -0
- sayane-1.0.3/.github/ISSUE_TEMPLATE/config.yml +5 -0
- sayane-1.0.3/.github/ISSUE_TEMPLATE/docs_design.md +89 -0
- sayane-1.0.3/.github/ISSUE_TEMPLATE/feature_request.md +105 -0
- sayane-1.0.3/.github/PULL_REQUEST_TEMPLATE.md +172 -0
- sayane-1.0.3/.github/workflows/ci.yml +68 -0
- sayane-1.0.3/.github/workflows/extension-e2e.yml +50 -0
- sayane-1.0.3/.github/workflows/publish-pypi.yml +59 -0
- sayane-1.0.3/.gitignore +223 -0
- sayane-1.0.3/CHANGELOG.md +77 -0
- sayane-1.0.3/CONTRIBUTING.md +166 -0
- sayane-1.0.3/CONTRIBUTING_ja.md +170 -0
- sayane-1.0.3/LICENSE +201 -0
- sayane-1.0.3/PKG-INFO +126 -0
- sayane-1.0.3/README.md +91 -0
- sayane-1.0.3/README_ja.md +414 -0
- sayane-1.0.3/docs/acceptance-manual-only.md +114 -0
- sayane-1.0.3/docs/acceptance-spec.md +392 -0
- sayane-1.0.3/docs/architecture.md +132 -0
- sayane-1.0.3/docs/bridge-manual.md +176 -0
- sayane-1.0.3/docs/ci.md +72 -0
- sayane-1.0.3/docs/cli-acceptance-test.md +386 -0
- sayane-1.0.3/docs/cli-chrome-extension.md +235 -0
- sayane-1.0.3/docs/cli-manual.md +471 -0
- sayane-1.0.3/docs/confidentiality-policy-schema.md +41 -0
- sayane-1.0.3/docs/context-layering-design.md +233 -0
- sayane-1.0.3/docs/development-principles.md +281 -0
- sayane-1.0.3/docs/dogfood-walkthrough.md +136 -0
- sayane-1.0.3/docs/evaluation-lineage.md +197 -0
- sayane-1.0.3/docs/evaluation-manual.md +264 -0
- sayane-1.0.3/docs/extension-acceptance-test.md +381 -0
- sayane-1.0.3/docs/extension-e2e.md +52 -0
- sayane-1.0.3/docs/extension-manual.md +99 -0
- sayane-1.0.3/docs/extraction-pipeline.md +174 -0
- sayane-1.0.3/docs/getting-started.md +193 -0
- sayane-1.0.3/docs/index.md +97 -0
- sayane-1.0.3/docs/install.md +227 -0
- sayane-1.0.3/docs/mcp-integration.md +138 -0
- sayane-1.0.3/docs/mcp-manual.md +104 -0
- sayane-1.0.3/docs/mvp-scope.md +135 -0
- sayane-1.0.3/docs/profile-ir.md +181 -0
- sayane-1.0.3/docs/roadmap.md +310 -0
- sayane-1.0.3/docs/security.md +213 -0
- sayane-1.0.3/docs/spec/kotonoha-generative-audit.md +233 -0
- sayane-1.0.3/docs/storage-backend.md +80 -0
- sayane-1.0.3/docs/storage-manual.md +186 -0
- sayane-1.0.3/docs/t-rde-execution-prompt.md +569 -0
- sayane-1.0.3/examples/README.md +12 -0
- sayane-1.0.3/examples/compiled/README.md +13 -0
- sayane-1.0.3/examples/compiled/chatgpt.json +12 -0
- sayane-1.0.3/examples/compiled/claude.json +9 -0
- sayane-1.0.3/examples/confidentiality/default.policy.yaml +53 -0
- sayane-1.0.3/examples/judge.yaml.example +11 -0
- sayane-1.0.3/examples/profiles/context/AI_HANDOFF.md +21 -0
- sayane-1.0.3/examples/profiles/context/MyContext.md +11 -0
- sayane-1.0.3/examples/profiles/context/README.md +5 -0
- sayane-1.0.3/examples/profiles/context/identity.md +7 -0
- sayane-1.0.3/examples/profiles/context/interaction.md +7 -0
- sayane-1.0.3/examples/profiles/context/notes/unverified.md +6 -0
- sayane-1.0.3/examples/profiles/context/projects.md +4 -0
- sayane-1.0.3/examples/profiles/context/theory.md +6 -0
- sayane-1.0.3/examples/profiles/minimal.yaml +40 -0
- sayane-1.0.3/extension/.gitignore +6 -0
- sayane-1.0.3/extension/README.md +64 -0
- sayane-1.0.3/extension/e2e/.e2e-env.json +5 -0
- sayane-1.0.3/extension/e2e/fixtures/chatgpt.html +13 -0
- sayane-1.0.3/extension/e2e/fixtures/claude.html +13 -0
- sayane-1.0.3/extension/e2e/global-setup.ts +66 -0
- sayane-1.0.3/extension/e2e/global-teardown.ts +15 -0
- sayane-1.0.3/extension/e2e/helpers/extension.ts +182 -0
- sayane-1.0.3/extension/e2e/insert-chatgpt.spec.ts +47 -0
- sayane-1.0.3/extension/e2e/insert-claude.spec.ts +47 -0
- sayane-1.0.3/extension/e2e/setup-bridge.py +43 -0
- sayane-1.0.3/extension/e2e/site-mismatch.spec.ts +29 -0
- sayane-1.0.3/extension/locale/en.json +61 -0
- sayane-1.0.3/extension/locale/ja.json +61 -0
- sayane-1.0.3/extension/manifest.json +25 -0
- sayane-1.0.3/extension/options.html +66 -0
- sayane-1.0.3/extension/package-lock.json +129 -0
- sayane-1.0.3/extension/package.json +18 -0
- sayane-1.0.3/extension/playwright.config.ts +17 -0
- sayane-1.0.3/extension/popup.html +123 -0
- sayane-1.0.3/extension/src/background.ts +125 -0
- sayane-1.0.3/extension/src/bridge-client.ts +185 -0
- sayane-1.0.3/extension/src/config.ts +40 -0
- sayane-1.0.3/extension/src/content-script-client.ts +133 -0
- sayane-1.0.3/extension/src/content.ts +59 -0
- sayane-1.0.3/extension/src/i18n.ts +86 -0
- sayane-1.0.3/extension/src/options.ts +101 -0
- sayane-1.0.3/extension/src/popup.ts +321 -0
- sayane-1.0.3/extension/src/providers/chatgpt.ts +28 -0
- sayane-1.0.3/extension/src/providers/claude.ts +26 -0
- sayane-1.0.3/extension/src/providers/deepseek.ts +25 -0
- sayane-1.0.3/extension/src/providers/gemini.ts +26 -0
- sayane-1.0.3/extension/src/providers/local-custom.ts +22 -0
- sayane-1.0.3/extension/src/providers/local-host.ts +56 -0
- sayane-1.0.3/extension/src/providers/local-openwebui.ts +25 -0
- sayane-1.0.3/extension/src/providers/registry.ts +128 -0
- sayane-1.0.3/extension/src/providers/types.ts +37 -0
- sayane-1.0.3/extension/src/sites/chatgpt.ts +2 -0
- sayane-1.0.3/extension/src/sites/claude.ts +2 -0
- sayane-1.0.3/extension/src/sites/registry.ts +6 -0
- sayane-1.0.3/extension/src/sites/types.ts +2 -0
- sayane-1.0.3/extension/src/types.ts +91 -0
- sayane-1.0.3/extension/test-results/.last-run.json +4 -0
- sayane-1.0.3/extension/tsconfig.json +15 -0
- sayane-1.0.3/packaging/pypi/README.md +83 -0
- sayane-1.0.3/packaging/scoop/README.md +36 -0
- sayane-1.0.3/packaging/scoop/sayane.json +28 -0
- sayane-1.0.3/packaging/winget/README.md +39 -0
- sayane-1.0.3/packaging/winget/zyx-corporation.sayane.yaml +45 -0
- sayane-1.0.3/pyproject.toml +73 -0
- sayane-1.0.3/schemas/README.md +13 -0
- sayane-1.0.3/schemas/prompt-ir.schema.json +42 -0
- sayane-1.0.3/schemas/sayane-confidentiality-policy.schema.json +139 -0
- sayane-1.0.3/schemas/sayane-profile.schema.json +113 -0
- sayane-1.0.3/scripts/build-wheel.sh +13 -0
- sayane-1.0.3/scripts/close-completed-issues.sh +38 -0
- sayane-1.0.3/scripts/dogfood-capture-eval.sh +35 -0
- sayane-1.0.3/scripts/install.ps1 +148 -0
- sayane-1.0.3/scripts/install.sh +171 -0
- sayane-1.0.3/scripts/post-release-v1.0.2.sh +10 -0
- sayane-1.0.3/scripts/post-release-v1.0.3.sh +25 -0
- sayane-1.0.3/scripts/publish-github-release-v1.0.2.sh +29 -0
- sayane-1.0.3/scripts/release-v1.0.2-notes.md +32 -0
- sayane-1.0.3/scripts/release-v1.0.3-notes.md +22 -0
- sayane-1.0.3/src/sayane/__init__.py +3 -0
- sayane-1.0.3/src/sayane/adapters/__init__.py +1 -0
- sayane-1.0.3/src/sayane/adapters/base.py +38 -0
- sayane-1.0.3/src/sayane/adapters/chatgpt.py +26 -0
- sayane-1.0.3/src/sayane/adapters/claude.py +25 -0
- sayane-1.0.3/src/sayane/adapters/deepseek.py +26 -0
- sayane-1.0.3/src/sayane/adapters/factory.py +32 -0
- sayane-1.0.3/src/sayane/adapters/gemini.py +28 -0
- sayane-1.0.3/src/sayane/adapters/local_openwebui.py +30 -0
- sayane-1.0.3/src/sayane/bridge/__init__.py +6 -0
- sayane-1.0.3/src/sayane/bridge/app.py +169 -0
- sayane-1.0.3/src/sayane/bridge/auth.py +40 -0
- sayane-1.0.3/src/sayane/bridge/candidate_api.py +81 -0
- sayane-1.0.3/src/sayane/bridge/capture_store.py +26 -0
- sayane-1.0.3/src/sayane/bridge/config.py +27 -0
- sayane-1.0.3/src/sayane/bridge/models.py +53 -0
- sayane-1.0.3/src/sayane/bridge/service.py +63 -0
- sayane-1.0.3/src/sayane/cli/__init__.py +1 -0
- sayane-1.0.3/src/sayane/cli/app.py +711 -0
- sayane-1.0.3/src/sayane/cli/help_cmd.py +128 -0
- sayane-1.0.3/src/sayane/cli/i18n.py +97 -0
- sayane-1.0.3/src/sayane/cli/locale/__init__.py +1 -0
- sayane-1.0.3/src/sayane/cli/locale/en.json +65 -0
- sayane-1.0.3/src/sayane/cli/locale/ja.json +65 -0
- sayane-1.0.3/src/sayane/cli/main.py +18 -0
- sayane-1.0.3/src/sayane/cli/paths.py +24 -0
- sayane-1.0.3/src/sayane/cli/plugins.py +20 -0
- sayane-1.0.3/src/sayane/core/__init__.py +1 -0
- sayane-1.0.3/src/sayane/core/builder.py +113 -0
- sayane-1.0.3/src/sayane/core/candidate.py +79 -0
- sayane-1.0.3/src/sayane/core/loader.py +22 -0
- sayane-1.0.3/src/sayane/core/models.py +87 -0
- sayane-1.0.3/src/sayane/core/profile_quality.py +71 -0
- sayane-1.0.3/src/sayane/evaluators/__init__.py +1 -0
- sayane-1.0.3/src/sayane/evaluators/diff.py +51 -0
- sayane-1.0.3/src/sayane/evaluators/heuristic_match.py +82 -0
- sayane-1.0.3/src/sayane/evaluators/judge_config.py +57 -0
- sayane-1.0.3/src/sayane/evaluators/llm_judge.py +146 -0
- sayane-1.0.3/src/sayane/evaluators/merge.py +88 -0
- sayane-1.0.3/src/sayane/evaluators/proposal.py +82 -0
- sayane-1.0.3/src/sayane/evaluators/rde.py +103 -0
- sayane-1.0.3/src/sayane/evaluators/rde_merge.py +34 -0
- sayane-1.0.3/src/sayane/evaluators/sections.py +98 -0
- sayane-1.0.3/src/sayane/evaluators/service.py +164 -0
- sayane-1.0.3/src/sayane/evaluators/uib.py +39 -0
- sayane-1.0.3/src/sayane/mcp/__init__.py +6 -0
- sayane-1.0.3/src/sayane/mcp/operations.py +130 -0
- sayane-1.0.3/src/sayane/mcp/server.py +139 -0
- sayane-1.0.3/src/sayane/plugins/__init__.py +13 -0
- sayane-1.0.3/src/sayane/plugins/hooks.py +47 -0
- sayane-1.0.3/src/sayane/schema_paths.py +10 -0
- sayane-1.0.3/src/sayane/storage/__init__.py +45 -0
- sayane-1.0.3/src/sayane/storage/backends/__init__.py +1 -0
- sayane-1.0.3/src/sayane/storage/backends/filesystem.py +43 -0
- sayane-1.0.3/src/sayane/storage/base.py +77 -0
- sayane-1.0.3/src/sayane/storage/candidates.py +97 -0
- sayane-1.0.3/src/sayane/storage/config.py +77 -0
- sayane-1.0.3/src/sayane/storage/context_index.py +67 -0
- sayane-1.0.3/src/sayane/storage/factory.py +69 -0
- sayane-1.0.3/src/sayane/storage/filesystem.py +83 -0
- sayane-1.0.3/src/sayane/storage/git_integration.py +86 -0
- sayane-1.0.3/src/sayane/storage/lineage.py +27 -0
- sayane-1.0.3/src/sayane/storage/lineage_store.py +39 -0
- sayane-1.0.3/src/sayane/storage/markdown.py +18 -0
- sayane-1.0.3/src/sayane/storage/obsidian.py +102 -0
- sayane-1.0.3/src/sayane/storage/registry.py +92 -0
- sayane-1.0.3/src/sayane/strategies/__init__.py +1 -0
- sayane-1.0.3/tests/conftest.py +22 -0
- sayane-1.0.3/tests/test_acceptance_cli.py +240 -0
- sayane-1.0.3/tests/test_acceptance_coverage.py +42 -0
- sayane-1.0.3/tests/test_adapters.py +90 -0
- sayane-1.0.3/tests/test_bridge_api.py +252 -0
- sayane-1.0.3/tests/test_builder.py +36 -0
- sayane-1.0.3/tests/test_candidate_cli.py +32 -0
- sayane-1.0.3/tests/test_candidate_flow.py +55 -0
- sayane-1.0.3/tests/test_capture_cli.py +60 -0
- sayane-1.0.3/tests/test_cli.py +73 -0
- sayane-1.0.3/tests/test_cli_help.py +39 -0
- sayane-1.0.3/tests/test_cli_i18n.py +30 -0
- sayane-1.0.3/tests/test_cli_locale_resolve.py +37 -0
- sayane-1.0.3/tests/test_cli_plugins.py +18 -0
- sayane-1.0.3/tests/test_confidentiality_policy_schema.py +66 -0
- sayane-1.0.3/tests/test_context_index.py +46 -0
- sayane-1.0.3/tests/test_critical_merge.py +58 -0
- sayane-1.0.3/tests/test_heuristic_match.py +121 -0
- sayane-1.0.3/tests/test_llm_judge.py +138 -0
- sayane-1.0.3/tests/test_markdown.py +6 -0
- sayane-1.0.3/tests/test_mcp_cli.py +55 -0
- sayane-1.0.3/tests/test_mcp_operations.py +100 -0
- sayane-1.0.3/tests/test_models.py +44 -0
- sayane-1.0.3/tests/test_obsidian.py +38 -0
- sayane-1.0.3/tests/test_obsidian_vault_env.py +47 -0
- sayane-1.0.3/tests/test_package.py +20 -0
- sayane-1.0.3/tests/test_profile_quality.py +34 -0
- sayane-1.0.3/tests/test_rde.py +32 -0
- sayane-1.0.3/tests/test_rde_merge.py +15 -0
- sayane-1.0.3/tests/test_schemas.py +32 -0
- sayane-1.0.3/tests/test_sections.py +40 -0
- sayane-1.0.3/tests/test_storage_backend.py +178 -0
- sayane-1.0.3/tests/test_storage_cli.py +49 -0
- 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,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 }}
|