claude-smart 0.2.46 → 0.2.47
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/README.md +19 -11
- package/bin/claude-smart.js +290 -68
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/README.md +11 -10
- package/plugin/dashboard/app/layout.tsx +20 -0
- package/plugin/opencode/dist/server.mjs +76 -2
- package/plugin/opencode/server.mts +79 -2
- package/plugin/pyproject.toml +6 -2
- package/plugin/scripts/smart-install.sh +7 -1
- package/plugin/src/claude_smart/cli.py +210 -22
- package/plugin/src/claude_smart/context_format.py +9 -9
- package/plugin/src/claude_smart/cs_cite.py +66 -19
- package/plugin/uv.lock +5 -5
- package/plugin/vendor/reflexio/README.md +3 -3
- package/plugin/vendor/reflexio/pyproject.toml +1 -1
- package/plugin/vendor/reflexio/reflexio/README.md +3 -1
- package/plugin/vendor/reflexio/reflexio/cli/bootstrap_config.py +1 -1
- package/plugin/vendor/reflexio/reflexio/cli/commands/setup_cmd.py +2 -2
- package/plugin/vendor/reflexio/reflexio/cli/utils.py +44 -1
- package/plugin/vendor/reflexio/reflexio/client/client.py +97 -0
- package/plugin/vendor/reflexio/reflexio/lib/_agent_playbook.py +8 -0
- package/plugin/vendor/reflexio/reflexio/lib/_base.py +15 -0
- package/plugin/vendor/reflexio/reflexio/lib/_generation.py +9 -8
- package/plugin/vendor/reflexio/reflexio/lib/_profiles.py +27 -16
- package/plugin/vendor/reflexio/reflexio/lib/_search.py +23 -5
- package/plugin/vendor/reflexio/reflexio/lib/_user_playbook.py +9 -0
- package/plugin/vendor/reflexio/reflexio/models/api_schema/domain/__init__.py +1 -0
- package/plugin/vendor/reflexio/reflexio/models/api_schema/domain/governance.py +117 -0
- package/plugin/vendor/reflexio/reflexio/models/api_schema/retriever_schema.py +45 -3
- package/plugin/vendor/reflexio/reflexio/models/config_schema.py +16 -0
- package/plugin/vendor/reflexio/reflexio/server/README.md +14 -2
- package/plugin/vendor/reflexio/reflexio/server/api.py +176 -29
- package/plugin/vendor/reflexio/reflexio/server/api_endpoints/request_context.py +1 -1
- package/plugin/vendor/reflexio/reflexio/server/{_auth.py → auth.py} +2 -0
- package/plugin/vendor/reflexio/reflexio/server/extensions.py +213 -0
- package/plugin/vendor/reflexio/reflexio/server/llm/model_defaults.py +4 -4
- package/plugin/vendor/reflexio/reflexio/server/llm/providers/claude_code_provider.py +1 -1
- package/plugin/vendor/reflexio/reflexio/server/llm/rerank/cross_encoder_reranker.py +12 -1
- package/plugin/vendor/reflexio/reflexio/server/prompt/prompt_bank/playbook_extraction_context/v4.4.0.prompt.md +14 -2
- package/plugin/vendor/reflexio/reflexio/server/services/README.md +3 -1
- package/plugin/vendor/reflexio/reflexio/server/services/extraction/resume_worker.py +8 -0
- package/plugin/vendor/reflexio/reflexio/server/services/governance/config.py +52 -0
- package/plugin/vendor/reflexio/reflexio/server/services/governance/service.py +378 -0
- package/plugin/vendor/reflexio/reflexio/server/services/governance/subject_refs.py +34 -0
- package/plugin/vendor/reflexio/reflexio/server/services/lineage/gc_scheduler.py +45 -19
- package/plugin/vendor/reflexio/reflexio/server/services/playbook/README.md +9 -1
- package/plugin/vendor/reflexio/reflexio/server/services/playbook/aggregation_prompt_processing.py +100 -0
- package/plugin/vendor/reflexio/reflexio/server/services/playbook/components/aggregator.py +129 -111
- package/plugin/vendor/reflexio/reflexio/server/services/playbook/service.py +9 -9
- package/plugin/vendor/reflexio/reflexio/server/services/profile/components/extractor.py +3 -2
- package/plugin/vendor/reflexio/reflexio/server/services/retrieval/recency.py +211 -0
- package/plugin/vendor/reflexio/reflexio/server/services/retrieval/relevance_floor.py +29 -13
- package/plugin/vendor/reflexio/reflexio/server/services/storage/error.py +4 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/governance_validation.py +681 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/__init__.py +14 -2
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_base.py +2 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_extras.py +49 -19
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_governance.py +1965 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_lineage.py +5 -3
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_playbook.py +1 -2133
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_profiles.py +262 -107
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/_requests.py +73 -33
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/playbook/__init__.py +13 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/playbook/_agent.py +952 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/playbook/_eval_results.py +189 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/playbook/_optimization.py +247 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/playbook/_source_linkage.py +145 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/sqlite_storage/playbook/_user.py +838 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/__init__.py +19 -3
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_extras.py +4 -4
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_governance.py +148 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_playbook.py +0 -909
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_profiles.py +13 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/_requests.py +2 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/playbook/__init__.py +13 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/playbook/_agent.py +365 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/playbook/_eval_results.py +124 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/playbook/_optimization.py +85 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/playbook/_source_linkage.py +47 -0
- package/plugin/vendor/reflexio/reflexio/server/services/storage/storage_base/playbook/_user.py +333 -0
- package/plugin/vendor/reflexio/reflexio/server/services/unified_search_service.py +153 -12
- package/plugin/vendor/reflexio/reflexio/server/services/playbook/user_detail_stripping.py +0 -84
|
@@ -23,23 +23,35 @@ from ._agent_run import (
|
|
|
23
23
|
)
|
|
24
24
|
from ._base import BaseStorageCore, matches_status_filter
|
|
25
25
|
from ._extras import ExtrasMixin
|
|
26
|
+
from ._governance import GovernanceMixin
|
|
26
27
|
from ._lineage import EntityType, LineageEventMixin
|
|
27
28
|
from ._operations import OperationMixin
|
|
28
|
-
from ._playbook import PlaybookMixin
|
|
29
29
|
from ._profiles import ProfileMixin
|
|
30
30
|
from ._requests import RequestMixin
|
|
31
31
|
from ._retrieval_log import RetrievalLogMixin
|
|
32
32
|
from ._shadow_verdicts import ShadowVerdictsMixin
|
|
33
33
|
from ._share_links import ShareLinkMixin
|
|
34
34
|
from ._stall_state import StallStateMixin
|
|
35
|
+
from .playbook import (
|
|
36
|
+
AgentEvaluationResultStoreMixin,
|
|
37
|
+
AgentPlaybookStoreMixin,
|
|
38
|
+
OptimizationJobStoreMixin,
|
|
39
|
+
PlaybookSourceLinkageMixin,
|
|
40
|
+
UserPlaybookStoreMixin,
|
|
41
|
+
)
|
|
35
42
|
|
|
36
43
|
|
|
37
44
|
class BaseStorage(
|
|
38
45
|
AgentRunMixin,
|
|
39
46
|
ProfileMixin,
|
|
40
47
|
RequestMixin,
|
|
41
|
-
|
|
48
|
+
AgentPlaybookStoreMixin,
|
|
49
|
+
UserPlaybookStoreMixin,
|
|
50
|
+
PlaybookSourceLinkageMixin,
|
|
51
|
+
OptimizationJobStoreMixin,
|
|
52
|
+
AgentEvaluationResultStoreMixin,
|
|
42
53
|
RetrievalLogMixin,
|
|
54
|
+
GovernanceMixin,
|
|
43
55
|
LineageEventMixin,
|
|
44
56
|
OperationMixin,
|
|
45
57
|
ExtrasMixin,
|
|
@@ -244,7 +256,11 @@ __all__ = [
|
|
|
244
256
|
"PendingToolCallRecord",
|
|
245
257
|
"PendingToolCallStatus",
|
|
246
258
|
"PendingToolCallUpsertResult",
|
|
247
|
-
"
|
|
259
|
+
"AgentEvaluationResultStoreMixin",
|
|
260
|
+
"AgentPlaybookStoreMixin",
|
|
261
|
+
"OptimizationJobStoreMixin",
|
|
262
|
+
"PlaybookSourceLinkageMixin",
|
|
263
|
+
"UserPlaybookStoreMixin",
|
|
248
264
|
"RetrievalLogMixin",
|
|
249
265
|
"PriorAnswerMatch",
|
|
250
266
|
"RunToolDependencyKind",
|
|
@@ -29,10 +29,10 @@ class ExtrasMixin:
|
|
|
29
29
|
dict: Dictionary containing:
|
|
30
30
|
- current_period: Stats for the current period (days_back)
|
|
31
31
|
- previous_period: Stats for the previous period (for trend calculation)
|
|
32
|
-
- interactions_time_series:
|
|
33
|
-
- profiles_time_series:
|
|
34
|
-
- playbooks_time_series:
|
|
35
|
-
- evaluations_time_series:
|
|
32
|
+
- interactions_time_series: Daily bucketed interaction counts
|
|
33
|
+
- profiles_time_series: Daily bucketed profile counts
|
|
34
|
+
- playbooks_time_series: Daily bucketed playbook counts
|
|
35
|
+
- evaluations_time_series: Daily bucketed success rates with optional counts
|
|
36
36
|
"""
|
|
37
37
|
raise NotImplementedError
|
|
38
38
|
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from abc import ABC, abstractmethod
|
|
4
|
+
from typing import Literal
|
|
5
|
+
|
|
6
|
+
from reflexio.models.api_schema.domain.governance import (
|
|
7
|
+
AuditEvent,
|
|
8
|
+
PurgeOperation,
|
|
9
|
+
PurgeOperationTarget,
|
|
10
|
+
SubjectWriteBarrier,
|
|
11
|
+
)
|
|
12
|
+
from reflexio.models.config_schema import GovernanceRetentionConfig
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class GovernanceMixin(ABC):
|
|
16
|
+
"""Mixin for backend-neutral governance storage primitives."""
|
|
17
|
+
|
|
18
|
+
@abstractmethod
|
|
19
|
+
def append_audit_event(self, event: AuditEvent) -> bool:
|
|
20
|
+
raise NotImplementedError
|
|
21
|
+
|
|
22
|
+
@abstractmethod
|
|
23
|
+
def list_audit_events(
|
|
24
|
+
self, subject_ref: str | None = None, *, org_id: str | None = None
|
|
25
|
+
) -> list[AuditEvent]:
|
|
26
|
+
raise NotImplementedError
|
|
27
|
+
|
|
28
|
+
@abstractmethod
|
|
29
|
+
def begin_purge_operation(
|
|
30
|
+
self,
|
|
31
|
+
purge_id: str,
|
|
32
|
+
idempotency_key: str,
|
|
33
|
+
operation_type: Literal["user_erasure", "org_purge"],
|
|
34
|
+
scope_type: Literal["user", "org"],
|
|
35
|
+
subject_ref: str | None,
|
|
36
|
+
request_ref: str,
|
|
37
|
+
) -> PurgeOperation:
|
|
38
|
+
raise NotImplementedError
|
|
39
|
+
|
|
40
|
+
@abstractmethod
|
|
41
|
+
def record_purge_target(
|
|
42
|
+
self,
|
|
43
|
+
purge_id: str,
|
|
44
|
+
target_name: str,
|
|
45
|
+
phase: str,
|
|
46
|
+
status: Literal["pending", "running", "failed", "complete"],
|
|
47
|
+
target_ref: str = "",
|
|
48
|
+
detail: dict[str, object] | None = None,
|
|
49
|
+
deleted_count: int = 0,
|
|
50
|
+
error_detail: str | None = None,
|
|
51
|
+
) -> None:
|
|
52
|
+
raise NotImplementedError
|
|
53
|
+
|
|
54
|
+
@abstractmethod
|
|
55
|
+
def list_purge_targets(
|
|
56
|
+
self, purge_id: str, phase: str | None = None
|
|
57
|
+
) -> list[PurgeOperationTarget]:
|
|
58
|
+
raise NotImplementedError
|
|
59
|
+
|
|
60
|
+
@abstractmethod
|
|
61
|
+
def purge_targets_prepared(self, purge_id: str) -> bool:
|
|
62
|
+
raise NotImplementedError
|
|
63
|
+
|
|
64
|
+
@abstractmethod
|
|
65
|
+
def prepare_governance_erase_targets(
|
|
66
|
+
self,
|
|
67
|
+
purge_id: str,
|
|
68
|
+
user_id: str,
|
|
69
|
+
owned_user_playbook_ids: set[int] | None = None,
|
|
70
|
+
) -> None:
|
|
71
|
+
raise NotImplementedError
|
|
72
|
+
|
|
73
|
+
@abstractmethod
|
|
74
|
+
def hide_governance_agent_playbooks_for_rebuild(self, purge_id: str) -> list[int]:
|
|
75
|
+
raise NotImplementedError
|
|
76
|
+
|
|
77
|
+
@abstractmethod
|
|
78
|
+
def apply_governance_user_data_delete(
|
|
79
|
+
self, purge_id: str, user_id: str
|
|
80
|
+
) -> dict[str, int]:
|
|
81
|
+
raise NotImplementedError
|
|
82
|
+
|
|
83
|
+
@abstractmethod
|
|
84
|
+
def apply_governance_agent_playbook_rebuild(
|
|
85
|
+
self,
|
|
86
|
+
purge_id: str,
|
|
87
|
+
agent_playbook_id: int,
|
|
88
|
+
remaining_source_windows: list[dict[str, object]],
|
|
89
|
+
content: str | None,
|
|
90
|
+
trigger: str | None,
|
|
91
|
+
rationale: str | None,
|
|
92
|
+
blocking_issue: dict[str, object] | None,
|
|
93
|
+
expanded_terms: str | None,
|
|
94
|
+
tags: list[str] | None,
|
|
95
|
+
) -> None:
|
|
96
|
+
raise NotImplementedError
|
|
97
|
+
|
|
98
|
+
@abstractmethod
|
|
99
|
+
def complete_purge_operation_with_audit(
|
|
100
|
+
self, purge_id: str, audit_event: AuditEvent
|
|
101
|
+
) -> PurgeOperation:
|
|
102
|
+
raise NotImplementedError
|
|
103
|
+
|
|
104
|
+
@abstractmethod
|
|
105
|
+
def begin_subject_erasure_barrier(
|
|
106
|
+
self, subject_ref: str, purge_id: str
|
|
107
|
+
) -> SubjectWriteBarrier:
|
|
108
|
+
raise NotImplementedError
|
|
109
|
+
|
|
110
|
+
@abstractmethod
|
|
111
|
+
def assert_subject_writable(self, subject_ref: str) -> None:
|
|
112
|
+
raise NotImplementedError
|
|
113
|
+
|
|
114
|
+
@abstractmethod
|
|
115
|
+
def complete_subject_erasure_barrier_after_empty_check(
|
|
116
|
+
self, purge_id: str, audit_event: AuditEvent
|
|
117
|
+
) -> PurgeOperation:
|
|
118
|
+
raise NotImplementedError
|
|
119
|
+
|
|
120
|
+
@abstractmethod
|
|
121
|
+
def fail_subject_erasure_barrier(
|
|
122
|
+
self,
|
|
123
|
+
subject_ref: str,
|
|
124
|
+
purge_id: str,
|
|
125
|
+
error_code: str,
|
|
126
|
+
error_detail: str,
|
|
127
|
+
) -> SubjectWriteBarrier:
|
|
128
|
+
raise NotImplementedError
|
|
129
|
+
|
|
130
|
+
@abstractmethod
|
|
131
|
+
def get_subject_write_barrier(
|
|
132
|
+
self, subject_ref: str
|
|
133
|
+
) -> SubjectWriteBarrier | None:
|
|
134
|
+
raise NotImplementedError
|
|
135
|
+
|
|
136
|
+
@abstractmethod
|
|
137
|
+
def fail_purge_operation(
|
|
138
|
+
self, purge_id: str, error_code: str, error_detail: str
|
|
139
|
+
) -> PurgeOperation:
|
|
140
|
+
raise NotImplementedError
|
|
141
|
+
|
|
142
|
+
@abstractmethod
|
|
143
|
+
def get_purge_operation(self, purge_id: str) -> PurgeOperation:
|
|
144
|
+
raise NotImplementedError
|
|
145
|
+
|
|
146
|
+
@abstractmethod
|
|
147
|
+
def gc_governance_retention(self, *, config: GovernanceRetentionConfig) -> int:
|
|
148
|
+
raise NotImplementedError
|