snipara-companion 3.6.13 → 3.6.14
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/CHANGELOG.md +14 -0
- package/README.md +30 -4
- package/dist/index.d.ts +6 -1
- package/dist/index.js +38 -7
- package/docs/FULL_REFERENCE.md +25 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
Release notes for `snipara-companion`, newest first.
|
|
4
4
|
|
|
5
|
+
## Unreleased
|
|
6
|
+
|
|
7
|
+
## New In 3.6.14
|
|
8
|
+
|
|
9
|
+
- Adds opt-in `--minimum-change-mode review` forwarding for hosted context
|
|
10
|
+
queries and code-impact reviews, including the evidence-backed
|
|
11
|
+
minimum-safe-change receipt in answer packs.
|
|
12
|
+
|
|
13
|
+
- Lets managed `pre-commit` and `pre-push` hooks receive an explicit,
|
|
14
|
+
one-operation review-only acknowledgement through
|
|
15
|
+
`SNIPARA_COLLABORATION_GUARD_ACK_REVIEW_ONLY=1`; the hook immediately
|
|
16
|
+
re-runs without the flag so blocking leases and hard conflicts remain
|
|
17
|
+
enforced.
|
|
18
|
+
|
|
5
19
|
## New In 3.6.13
|
|
6
20
|
|
|
7
21
|
- Adds a native spec-driven `feature` workflow for durable `spec.md`, `plan.md`,
|
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ state, handoffs, and durable task outcomes.
|
|
|
18
18
|
```bash
|
|
19
19
|
npx -y create-snipara@latest init --client cursor --starter
|
|
20
20
|
npx -y snipara-companion session-bootstrap --include-session-context --max-context-tokens 1000
|
|
21
|
-
npx -y snipara-companion impact src/auth/session.ts --source local
|
|
21
|
+
npx -y snipara-companion code impact --changed-files src/auth/session.ts --source local
|
|
22
22
|
npx -y snipara-companion source init .
|
|
23
23
|
```
|
|
24
24
|
|
|
@@ -106,7 +106,7 @@ These commands are useful without hosted Snipara:
|
|
|
106
106
|
| Command | What it gives you locally |
|
|
107
107
|
| ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
108
108
|
| `source init` / `source sync` / `source status` | Local source snapshot, document preview, and code overlay |
|
|
109
|
-
| `impact` / `code impact`
|
|
109
|
+
| `code impact` (`impact` alias) / `code local impact` | Bounded transitive blast radius, chains, and explainable local risk |
|
|
110
110
|
| `reality-check` | Intent Ledger, Unknown Registry, auto-linked context, and inspectable proof |
|
|
111
111
|
| `code callers` / `imports` / `neighbors` / `shortest-path` | Structural repo questions from local files |
|
|
112
112
|
| `workflow start` / `phase-start` / `phase-commit` / `resume` | Agent continuity that survives compaction |
|
|
@@ -125,6 +125,32 @@ These commands are useful without hosted Snipara:
|
|
|
125
125
|
| `intelligence ledger-export` | Structured redacted ledger JSON for replay and review |
|
|
126
126
|
| `stuck-guard`, `memory-guard`, `pre-tool`, `post-tool` | Fail-soft local guards and hook helpers |
|
|
127
127
|
|
|
128
|
+
### Canonical command forms
|
|
129
|
+
|
|
130
|
+
Use the exact CLI value after `workflow run --mode`:
|
|
131
|
+
|
|
132
|
+
| CLI value | Guide label | Meaning |
|
|
133
|
+
| ------------- | ------------------- | --------------------------------------------------------------------- |
|
|
134
|
+
| `lite` | LITE | Small, known-scope work with no mandatory hosted context call |
|
|
135
|
+
| `standard` | STANDARD | Normal work with context and code-graph follow-up when needed |
|
|
136
|
+
| `auto` | AUTO | Routes by task intent to `lite`, `standard`, `full`, or `orchestrate` |
|
|
137
|
+
| `full` | FULL | Managed, phased work with durable context and plan support |
|
|
138
|
+
| `orchestrate` | FULL + ORCHESTRATED | Explicit deeper orchestration for multi-agent or proof-gate work |
|
|
139
|
+
|
|
140
|
+
The root `run` command is the Project Intelligence judgment/release flow.
|
|
141
|
+
`workflow run` is the workflow-mode runner. They share a verb but are not
|
|
142
|
+
aliases.
|
|
143
|
+
|
|
144
|
+
Use `code impact` as the canonical impact gate. The root `impact` command is a
|
|
145
|
+
compatibility alias, while `code local impact` is the separate non-canonical
|
|
146
|
+
local-overlay query. Use `final-commit` as the canonical final workflow
|
|
147
|
+
closeout; `workflow final-commit` remains a compatibility alias. `task-commit`
|
|
148
|
+
captures a durable task outcome, and `workflow phase-commit` records one
|
|
149
|
+
managed phase and advances the workflow; these are distinct operations.
|
|
150
|
+
|
|
151
|
+
For a public, copy/paste-oriented table, see the
|
|
152
|
+
[Companion CLI Command Reference](https://www.snipara.com/docs/integration/companion/reference).
|
|
153
|
+
|
|
128
154
|
### Spec-driven feature workflow
|
|
129
155
|
|
|
130
156
|
Companion provides a native Spec Kit-style preparation layer without creating a
|
|
@@ -506,14 +532,14 @@ or ahead work; `--source local` remains completely offline.
|
|
|
506
532
|
Use `npx` for one-off checks:
|
|
507
533
|
|
|
508
534
|
```bash
|
|
509
|
-
npx -y snipara-companion impact src/auth/session.ts --source local
|
|
535
|
+
npx -y snipara-companion code impact --changed-files src/auth/session.ts --source local
|
|
510
536
|
```
|
|
511
537
|
|
|
512
538
|
Install globally only if you use it every day:
|
|
513
539
|
|
|
514
540
|
```bash
|
|
515
541
|
npm install -g snipara-companion
|
|
516
|
-
snipara-companion impact src/auth/session.ts
|
|
542
|
+
snipara-companion code impact --changed-files src/auth/session.ts
|
|
517
543
|
snipara-companion workflow resume
|
|
518
544
|
```
|
|
519
545
|
|
package/dist/index.d.ts
CHANGED
|
@@ -89,6 +89,7 @@ interface ContextQueryResult {
|
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
91
|
type ContextQuerySearchMode = "keyword" | "semantic" | "hybrid";
|
|
92
|
+
type MinimumChangeMode = "off" | "review";
|
|
92
93
|
interface ContextQueryOptions {
|
|
93
94
|
searchMode?: ContextQuerySearchMode;
|
|
94
95
|
includeMetadata?: boolean;
|
|
@@ -97,6 +98,7 @@ interface ContextQueryOptions {
|
|
|
97
98
|
includeSharedContext?: boolean;
|
|
98
99
|
includeAllTiers?: boolean;
|
|
99
100
|
returnReferences?: boolean;
|
|
101
|
+
minimumChangeMode?: MinimumChangeMode;
|
|
100
102
|
}
|
|
101
103
|
interface AnswerPackSource {
|
|
102
104
|
title?: string;
|
|
@@ -125,6 +127,7 @@ interface AnswerPack {
|
|
|
125
127
|
graph_context_included?: boolean;
|
|
126
128
|
impact_hint?: string | null;
|
|
127
129
|
};
|
|
130
|
+
minimum_safe_change?: Record<string, unknown>;
|
|
128
131
|
token_count?: number;
|
|
129
132
|
}
|
|
130
133
|
interface HostedContextControlDiffResponse {
|
|
@@ -1141,6 +1144,7 @@ declare class RLMClient {
|
|
|
1141
1144
|
direction?: "in" | "out" | "both";
|
|
1142
1145
|
edgeKinds?: string[];
|
|
1143
1146
|
limit?: number;
|
|
1147
|
+
minimumChangeMode?: MinimumChangeMode;
|
|
1144
1148
|
}): Promise<Record<string, unknown>>;
|
|
1145
1149
|
/**
|
|
1146
1150
|
* Track accessed files using snipara_remember
|
|
@@ -2198,6 +2202,7 @@ declare function writeLocalCodeOverlayCache(manifest: LocalCodeOverlayManifest):
|
|
|
2198
2202
|
declare function readLocalCodeOverlayCache(cwd?: string): LocalCodeOverlayManifest | null;
|
|
2199
2203
|
declare function writeLocalCodePromotionState(state: LocalCodePromotionState): string;
|
|
2200
2204
|
declare function readLocalCodePromotionState(cwd?: string): LocalCodePromotionState | null;
|
|
2205
|
+
declare function resolveMinimumChangeMode(value: unknown): MinimumChangeMode;
|
|
2201
2206
|
declare function resolveCodeGraphMode(args: {
|
|
2202
2207
|
requested: CodeGraphSource;
|
|
2203
2208
|
dirtyFiles: string[];
|
|
@@ -5373,4 +5378,4 @@ declare function installAutomationBundle(args: {
|
|
|
5373
5378
|
}): Promise<AutomationInstallResult>;
|
|
5374
5379
|
declare function getAutomationStatus(projectDir?: string): AutomationStatusResult;
|
|
5375
5380
|
|
|
5376
|
-
export { AGENT_CONTEXT_EVIDENCE_DEFAULT_LEDGER, AUTOMATION_MANIFEST_RELATIVE_PATH, AutomationInstallConflictError, AutomationUnsupportedHookBundleError, CODING_INTELLIGENCE_LEDGER_VERSION, COLLABORATION_STATE_RELATIVE_PATH, ENGINEERING_LEAD_EXECUTION_RECEIPT_STAGES, ENGINEERING_LEAD_EXECUTION_RECEIPT_STATUSES, ENGINEERING_LEAD_POSTURES, ENGINEERING_LEAD_PROOF_VERIFICATION_SOURCES, ENGINEERING_LEAD_PROOF_VERIFICATION_STATUSES, ENGINEERING_LEAD_ROUTING_MODES, ENGINEERING_LEAD_STATUSES, ENGINEERING_LEAD_SUPERVISION_STATUSES, ENGINEERING_LEAD_WORKER_ROLES, ENGINEERING_LEAD_WORK_PACKAGE_STATUSES, FEATURE_DEFAULT_OUTPUT_DIR, FEATURE_WORK_ITEM_VERSION, FINAL_COMMIT_REPORT_RELATIVE_PATH, FINAL_COMMIT_REPORT_VERSION, MEMORY_GUARD_CONTEXT_TIMEOUT_MS, MEMORY_GUARD_RECALL_TIMEOUT_MS, ORCHESTRATOR_HANDOFF_RELATIVE_PATH, POLICY_LEDGER_SYNC_REPORT_VERSION, PRODUCER_LOOP_ARTIFACT_VERSION, PRODUCER_LOOP_RELATIVE_DIR, PRODUCER_LOOP_REPORT_VERSION, TEAM_SYNC_STATE_RELATIVE_PATH, WHY_OUTCOME_CAPTURE_VERSION, WORKFLOW_PLANS_RELATIVE_DIR, WORKFLOW_STATE_RELATIVE_PATH, addLocalWorker, agentContextEvidenceCollectCommand, agentContextEvidenceRecordCommand, agentContextEvidenceStatusCommand, agentContextEvidenceTemplateCommand, agentContextResolveCommand, agentContextValidateCommand, agentReadinessAuditCommand, appendActivityEvent, applyLocalContextMutationPlan, applyManagedWorkflowPolicyAutoResponses, archiveInactiveTeamSyncWork, attachLocalContextPackReceipts, autoArchiveTeamSyncState, buildAdaptiveWorkRoutingRecommendation, buildAgentReadinessAuditReport, buildAgenticHandoffMarkdown, buildAgenticTimeline, buildAgenticWorkStatus, buildAutomationInstallPlan, buildCanonicalEvent, buildCodeHooksInstallPlan, buildCodePromotionResult, buildCodeStatusResult, buildCodeSyncResult, buildCodingIntelligenceLedger, buildCollaborationActor, buildCollaborationGuardActionCards, buildCollaborationHooksInstallPlan, buildCommitResultMetadata, buildCompanionEngineeringLeadPlanReport, buildContextPackStats, buildEvalCaseArtifact, buildFeaturePlanMarkdown, buildFeatureSpecMarkdown, buildFeatureTasksMarkdown, buildFinalCommitReport, buildGeneratedWorkflowPlanDocument, buildHostedCodeOverlayUploadPayload, buildHostedGuardPayload, buildJournalCheckpointEntry, buildLocalAgentContextValidationReport, buildLocalCallersResult, buildLocalCodeOverlay, buildLocalContextMutationPlan, buildLocalContextPackReceipt, buildLocalContextPackReceipts, buildLocalImpactResult, buildLocalImportsResult, buildLocalNeighborsResult, buildLocalProjectContextValidationReport, buildLocalProjectDriftReport, buildLocalProjectRealityCheck, buildLocalProjectRealityCheckWithAutoContext, buildLocalShortestPathResult, buildLocalSourceSnapshot, buildLocalSourceStatus, buildLocalSourceSyncResult, buildMemoryAudit, buildOnboardFolderManifest, buildOrchestratorHandoff, buildPolicyLedgerSyncReport, buildProducerLoopReport, buildProjectIntelligenceBrief, buildProjectIntelligenceRun, buildProjectJudgmentCard, buildSessionBootstrapBrief, buildSessionBootstrapQuality, buildSessionSnapshot, buildSyncDocumentsDryRun, buildTeamSyncHandoffRecord, buildTeamSyncStartWorkRecord, buildTeamSyncSummary, buildToolCallPayload, buildToolResultPayload, buildVerificationPlan, buildWhyOutcomeCaptureReport, buildWorkerTrustCandidates, buildWorkflowImpactGate, buildWorkflowPhaseCommitReceipt, buildWorkflowPhaseCommitSummary, buildWorkflowPlanScaffold, captureStandaloneCommitWhy, categoryFromGuardTag, classifyToolResult, cleanContextPacks, codingLedgerExportCommand, collaborationIdeStatusCommand, collectAgentReadinessLocalSignals, collectPolicyLedgerSyncArtifacts, collectSyncDocuments, collectSyncDocumentsInput, compactHostedGuardResources, compareLocalSourceSnapshots, completeTeamSyncStateFromEvidence, completeTeamSyncWorkFromEvidence, contextControlApplyCommand, contextControlDriftCommand, contextControlHostedApplyCommand, contextControlHostedDiffCommand, contextControlPlanCommand, contextControlValidateCommand, contextPackCleanCommand, contextPackPackCommand, contextPackRetrieveCommand, contextPackStatsCommand, controlledWorkerExecuteCommand, createClient, createEmptyCollaborationState, createEmptyTeamSyncState, createLocalQueryCache, deriveLocalCollaborationResourcesFromFiles, deriveManagedWorkflowJudgmentResolution, detectReleaseSurfacesFromFiles, detectRuntimeEnvironment, evalExportCommand, evalRunCommand, evaluateProjectPolicyGates, extractCommandFromToolInput, extractFilesFromToolInput, featureInitCommand, featurePlanCommand, featureSpecifyCommand, featureStartCommand, featureStatusCommand, featureTasksCommand, formatAgentContextResolution, formatAgentReadinessAuditReport, formatCompanionEngineeringLeadPlanReport, formatFinalCommitReport, formatOrchestratorRecommendationReason, formatPolicyGateDecision, formatProjectJudgmentCard, formatStuckGuardDecision, getAutomationManifestPath, getAutomationStatus, getCollaborationStatePath, getConfigPath, getContextPackStoragePaths, getLocalCodeOverlayCachePath, getLocalCodePromotionStatePath, getLocalSourceSnapshotPath, getOrchestratorRecommendation, getPlanStepDisplayTitle, getStagedFiles, getStuckGuardInjection, getTeamSyncStatePath, hasActiveManagedWorkflow, hashWorkerProfile, ingestReferences, installAutomationBundle, leadPlanCommand, listProjectsForApiKey, loadAutomationManifest, loadCollaborationState, loadConfig, loadTeamSyncState, memoryAuditCommand, memoryCleanCandidatesCommand, memoryCompactCommand, memoryHealthCommand, memoryLocalCommand, memoryReviewsCommand, mergeHybridCodeResults, normalizeCollaborationFiles, normalizeFeatureSlug, normalizeGuardTag, normalizeWorkflowPlanInput, outcomeCapturePreviewCommand, packContext, parseCollaborationResources, projectIntelligenceBriefCommand, projectIntelligenceRunCommand, readActivityTimeline, readAgentContextEvidenceLedger, readLocalCodeOverlayCache, readLocalCodePromotionState, readLocalSourceSnapshot, readLocalWorkersConfig, readSessionSnapshot, readStandaloneCommitEvidence, readWorkerTrustEvent, realityCheckCommand, referencesIngestCommand, referencesScanCommand, resolveAutoWorkflowMode, resolveCodeGraphMode, resolveContextPackRecord, resolveFeatureArtifactPaths, resolveFullWorkflowTokenBudget, resolveLocalWorkerRoutingDefaults, resolveQueryFromToolInput, retrieveContextPack, runMemoryGuardCheck, saveCollaborationState, saveConfig, saveTeamSyncState, scanReferences, shouldFailCollaborationGuard, shouldSuggestOrchestratorForWorkflow, shouldSuggestRuntimeForWorkflow, summarizeLocalCodeOverlay, teamSyncSweepCommand, validatePlanResult, verifyCommand, workerTrustCandidateCommand, workerTrustReviewCommand, workerTrustStatusCommand, workersLocalAddCommand, workersLocalListCommand, workersLocalProbePrintCommand, workersLocalRemoveCommand, workersLocalStatusCommand, workflowSyncPolicyLedgerCommand, writeFinalCommitReport, writeLocalCodeOverlayCache, writeLocalCodePromotionState, writeLocalSourceSnapshot, writeOrchestratorHandoff, writeProducerLoopArtifact, writeSessionSnapshot };
|
|
5381
|
+
export { AGENT_CONTEXT_EVIDENCE_DEFAULT_LEDGER, AUTOMATION_MANIFEST_RELATIVE_PATH, AutomationInstallConflictError, AutomationUnsupportedHookBundleError, CODING_INTELLIGENCE_LEDGER_VERSION, COLLABORATION_STATE_RELATIVE_PATH, ENGINEERING_LEAD_EXECUTION_RECEIPT_STAGES, ENGINEERING_LEAD_EXECUTION_RECEIPT_STATUSES, ENGINEERING_LEAD_POSTURES, ENGINEERING_LEAD_PROOF_VERIFICATION_SOURCES, ENGINEERING_LEAD_PROOF_VERIFICATION_STATUSES, ENGINEERING_LEAD_ROUTING_MODES, ENGINEERING_LEAD_STATUSES, ENGINEERING_LEAD_SUPERVISION_STATUSES, ENGINEERING_LEAD_WORKER_ROLES, ENGINEERING_LEAD_WORK_PACKAGE_STATUSES, FEATURE_DEFAULT_OUTPUT_DIR, FEATURE_WORK_ITEM_VERSION, FINAL_COMMIT_REPORT_RELATIVE_PATH, FINAL_COMMIT_REPORT_VERSION, MEMORY_GUARD_CONTEXT_TIMEOUT_MS, MEMORY_GUARD_RECALL_TIMEOUT_MS, ORCHESTRATOR_HANDOFF_RELATIVE_PATH, POLICY_LEDGER_SYNC_REPORT_VERSION, PRODUCER_LOOP_ARTIFACT_VERSION, PRODUCER_LOOP_RELATIVE_DIR, PRODUCER_LOOP_REPORT_VERSION, TEAM_SYNC_STATE_RELATIVE_PATH, WHY_OUTCOME_CAPTURE_VERSION, WORKFLOW_PLANS_RELATIVE_DIR, WORKFLOW_STATE_RELATIVE_PATH, addLocalWorker, agentContextEvidenceCollectCommand, agentContextEvidenceRecordCommand, agentContextEvidenceStatusCommand, agentContextEvidenceTemplateCommand, agentContextResolveCommand, agentContextValidateCommand, agentReadinessAuditCommand, appendActivityEvent, applyLocalContextMutationPlan, applyManagedWorkflowPolicyAutoResponses, archiveInactiveTeamSyncWork, attachLocalContextPackReceipts, autoArchiveTeamSyncState, buildAdaptiveWorkRoutingRecommendation, buildAgentReadinessAuditReport, buildAgenticHandoffMarkdown, buildAgenticTimeline, buildAgenticWorkStatus, buildAutomationInstallPlan, buildCanonicalEvent, buildCodeHooksInstallPlan, buildCodePromotionResult, buildCodeStatusResult, buildCodeSyncResult, buildCodingIntelligenceLedger, buildCollaborationActor, buildCollaborationGuardActionCards, buildCollaborationHooksInstallPlan, buildCommitResultMetadata, buildCompanionEngineeringLeadPlanReport, buildContextPackStats, buildEvalCaseArtifact, buildFeaturePlanMarkdown, buildFeatureSpecMarkdown, buildFeatureTasksMarkdown, buildFinalCommitReport, buildGeneratedWorkflowPlanDocument, buildHostedCodeOverlayUploadPayload, buildHostedGuardPayload, buildJournalCheckpointEntry, buildLocalAgentContextValidationReport, buildLocalCallersResult, buildLocalCodeOverlay, buildLocalContextMutationPlan, buildLocalContextPackReceipt, buildLocalContextPackReceipts, buildLocalImpactResult, buildLocalImportsResult, buildLocalNeighborsResult, buildLocalProjectContextValidationReport, buildLocalProjectDriftReport, buildLocalProjectRealityCheck, buildLocalProjectRealityCheckWithAutoContext, buildLocalShortestPathResult, buildLocalSourceSnapshot, buildLocalSourceStatus, buildLocalSourceSyncResult, buildMemoryAudit, buildOnboardFolderManifest, buildOrchestratorHandoff, buildPolicyLedgerSyncReport, buildProducerLoopReport, buildProjectIntelligenceBrief, buildProjectIntelligenceRun, buildProjectJudgmentCard, buildSessionBootstrapBrief, buildSessionBootstrapQuality, buildSessionSnapshot, buildSyncDocumentsDryRun, buildTeamSyncHandoffRecord, buildTeamSyncStartWorkRecord, buildTeamSyncSummary, buildToolCallPayload, buildToolResultPayload, buildVerificationPlan, buildWhyOutcomeCaptureReport, buildWorkerTrustCandidates, buildWorkflowImpactGate, buildWorkflowPhaseCommitReceipt, buildWorkflowPhaseCommitSummary, buildWorkflowPlanScaffold, captureStandaloneCommitWhy, categoryFromGuardTag, classifyToolResult, cleanContextPacks, codingLedgerExportCommand, collaborationIdeStatusCommand, collectAgentReadinessLocalSignals, collectPolicyLedgerSyncArtifacts, collectSyncDocuments, collectSyncDocumentsInput, compactHostedGuardResources, compareLocalSourceSnapshots, completeTeamSyncStateFromEvidence, completeTeamSyncWorkFromEvidence, contextControlApplyCommand, contextControlDriftCommand, contextControlHostedApplyCommand, contextControlHostedDiffCommand, contextControlPlanCommand, contextControlValidateCommand, contextPackCleanCommand, contextPackPackCommand, contextPackRetrieveCommand, contextPackStatsCommand, controlledWorkerExecuteCommand, createClient, createEmptyCollaborationState, createEmptyTeamSyncState, createLocalQueryCache, deriveLocalCollaborationResourcesFromFiles, deriveManagedWorkflowJudgmentResolution, detectReleaseSurfacesFromFiles, detectRuntimeEnvironment, evalExportCommand, evalRunCommand, evaluateProjectPolicyGates, extractCommandFromToolInput, extractFilesFromToolInput, featureInitCommand, featurePlanCommand, featureSpecifyCommand, featureStartCommand, featureStatusCommand, featureTasksCommand, formatAgentContextResolution, formatAgentReadinessAuditReport, formatCompanionEngineeringLeadPlanReport, formatFinalCommitReport, formatOrchestratorRecommendationReason, formatPolicyGateDecision, formatProjectJudgmentCard, formatStuckGuardDecision, getAutomationManifestPath, getAutomationStatus, getCollaborationStatePath, getConfigPath, getContextPackStoragePaths, getLocalCodeOverlayCachePath, getLocalCodePromotionStatePath, getLocalSourceSnapshotPath, getOrchestratorRecommendation, getPlanStepDisplayTitle, getStagedFiles, getStuckGuardInjection, getTeamSyncStatePath, hasActiveManagedWorkflow, hashWorkerProfile, ingestReferences, installAutomationBundle, leadPlanCommand, listProjectsForApiKey, loadAutomationManifest, loadCollaborationState, loadConfig, loadTeamSyncState, memoryAuditCommand, memoryCleanCandidatesCommand, memoryCompactCommand, memoryHealthCommand, memoryLocalCommand, memoryReviewsCommand, mergeHybridCodeResults, normalizeCollaborationFiles, normalizeFeatureSlug, normalizeGuardTag, normalizeWorkflowPlanInput, outcomeCapturePreviewCommand, packContext, parseCollaborationResources, projectIntelligenceBriefCommand, projectIntelligenceRunCommand, readActivityTimeline, readAgentContextEvidenceLedger, readLocalCodeOverlayCache, readLocalCodePromotionState, readLocalSourceSnapshot, readLocalWorkersConfig, readSessionSnapshot, readStandaloneCommitEvidence, readWorkerTrustEvent, realityCheckCommand, referencesIngestCommand, referencesScanCommand, resolveAutoWorkflowMode, resolveCodeGraphMode, resolveContextPackRecord, resolveFeatureArtifactPaths, resolveFullWorkflowTokenBudget, resolveLocalWorkerRoutingDefaults, resolveMinimumChangeMode, resolveQueryFromToolInput, retrieveContextPack, runMemoryGuardCheck, saveCollaborationState, saveConfig, saveTeamSyncState, scanReferences, shouldFailCollaborationGuard, shouldSuggestOrchestratorForWorkflow, shouldSuggestRuntimeForWorkflow, summarizeLocalCodeOverlay, teamSyncSweepCommand, validatePlanResult, verifyCommand, workerTrustCandidateCommand, workerTrustReviewCommand, workerTrustStatusCommand, workersLocalAddCommand, workersLocalListCommand, workersLocalProbePrintCommand, workersLocalRemoveCommand, workersLocalStatusCommand, workflowSyncPolicyLedgerCommand, writeFinalCommitReport, writeLocalCodeOverlayCache, writeLocalCodePromotionState, writeLocalSourceSnapshot, writeOrchestratorHandoff, writeProducerLoopArtifact, writeSessionSnapshot };
|
package/dist/index.js
CHANGED
|
@@ -253,6 +253,7 @@ __export(index_exports, {
|
|
|
253
253
|
resolveFeatureArtifactPaths: () => resolveFeatureArtifactPaths,
|
|
254
254
|
resolveFullWorkflowTokenBudget: () => resolveFullWorkflowTokenBudget,
|
|
255
255
|
resolveLocalWorkerRoutingDefaults: () => resolveLocalWorkerRoutingDefaults,
|
|
256
|
+
resolveMinimumChangeMode: () => resolveMinimumChangeMode,
|
|
256
257
|
resolveQueryFromToolInput: () => resolveQueryFromToolInput,
|
|
257
258
|
retrieveContextPack: () => retrieveContextPack,
|
|
258
259
|
runMemoryGuardCheck: () => runMemoryGuardCheck,
|
|
@@ -975,7 +976,8 @@ var RLMClient = class {
|
|
|
975
976
|
auto_decompose: options.autoDecompose,
|
|
976
977
|
include_shared_context: options.includeSharedContext,
|
|
977
978
|
include_all_tiers: options.includeAllTiers,
|
|
978
|
-
return_references: options.returnReferences
|
|
979
|
+
return_references: options.returnReferences,
|
|
980
|
+
minimum_change_mode: options.minimumChangeMode ?? "off"
|
|
979
981
|
});
|
|
980
982
|
return {
|
|
981
983
|
sections: (result.sections || []).map((s) => ({
|
|
@@ -1072,7 +1074,8 @@ var RLMClient = class {
|
|
|
1072
1074
|
depth: options.depth ?? 3,
|
|
1073
1075
|
direction: options.direction ?? "both",
|
|
1074
1076
|
edge_kinds: options.edgeKinds,
|
|
1075
|
-
limit: options.limit ?? 50
|
|
1077
|
+
limit: options.limit ?? 50,
|
|
1078
|
+
minimum_change_mode: options.minimumChangeMode ?? "off"
|
|
1076
1079
|
});
|
|
1077
1080
|
}
|
|
1078
1081
|
/**
|
|
@@ -5328,6 +5331,11 @@ function resolveRequestedCodeGraphSource(value) {
|
|
|
5328
5331
|
}
|
|
5329
5332
|
throw new Error("--source must be one of: auto, local, hosted, hybrid");
|
|
5330
5333
|
}
|
|
5334
|
+
function resolveMinimumChangeMode(value) {
|
|
5335
|
+
if (value === void 0 || value === null || value === "") return "off";
|
|
5336
|
+
if (value === "off" || value === "review") return value;
|
|
5337
|
+
throw new Error("--minimum-change-mode must be one of: off, review");
|
|
5338
|
+
}
|
|
5331
5339
|
function resolveCodeGraphMode(args) {
|
|
5332
5340
|
if (args.fallbackHosted && args.requested !== "hosted") {
|
|
5333
5341
|
return args.hostedConfigured ? { selected: "hybrid_graph", reason: "fallback_hosted_requested" } : { selected: "local_overlay", reason: "fallback_hosted_not_configured" };
|
|
@@ -5484,6 +5492,7 @@ function mergeHybridCodeResults(verb, localResult, hostedResult, hostedError) {
|
|
|
5484
5492
|
);
|
|
5485
5493
|
const coverageGaps = mergeResultArrays([hosted, local], ["coverage_gaps", "coverageGaps"]);
|
|
5486
5494
|
const warnings = mergeResultArrays([hosted, local], ["warnings"]);
|
|
5495
|
+
const minimumSafeChange = hosted.minimum_safe_change ?? hosted.minimumSafeChange ?? local.minimum_safe_change;
|
|
5487
5496
|
return {
|
|
5488
5497
|
title: `Hybrid ${verb}`,
|
|
5489
5498
|
mode: hostedError ? "hybrid_degraded_local" : "hybrid",
|
|
@@ -5506,6 +5515,7 @@ function mergeHybridCodeResults(verb, localResult, hostedResult, hostedError) {
|
|
|
5506
5515
|
recommended_actions: recommendedActions,
|
|
5507
5516
|
coverage_gaps: coverageGaps,
|
|
5508
5517
|
warnings,
|
|
5518
|
+
...minimumSafeChange ? { minimum_safe_change: minimumSafeChange } : {},
|
|
5509
5519
|
...hosted.index_freshness !== void 0 ? { index_freshness: hosted.index_freshness } : {},
|
|
5510
5520
|
...hosted.impact !== void 0 ? { impact: hosted.impact } : {},
|
|
5511
5521
|
local: localResult,
|
|
@@ -5587,7 +5597,8 @@ async function callHostedCodeTool(verb, options) {
|
|
|
5587
5597
|
depth: options.depth,
|
|
5588
5598
|
direction: traversalDirection(options.direction),
|
|
5589
5599
|
edgeKinds: options.edgeKinds,
|
|
5590
|
-
limit: options.limit
|
|
5600
|
+
limit: options.limit,
|
|
5601
|
+
minimumChangeMode: options.minimumChangeMode
|
|
5591
5602
|
});
|
|
5592
5603
|
}
|
|
5593
5604
|
}
|
|
@@ -20469,7 +20480,22 @@ function buildCollaborationGitHookBlock(hookName) {
|
|
|
20469
20480
|
" fi",
|
|
20470
20481
|
" }",
|
|
20471
20482
|
` snipara_companion_hook collaboration claim --resource SURFACE:checkout-git-write --mode EXCLUSIVE --ttl-seconds 300 --reason "${profile} git write" --json >/dev/null || true`,
|
|
20472
|
-
|
|
20483
|
+
" snipara_companion_guard() {",
|
|
20484
|
+
` snipara_companion_hook collaboration guard --profile ${profile} --action ${profile} --resource SURFACE:checkout-git-write --enforce "$@" --json >/dev/null`,
|
|
20485
|
+
" }",
|
|
20486
|
+
' if [ "${SNIPARA_COLLABORATION_GUARD_ACK_REVIEW_ONLY:-0}" = "1" ]; then',
|
|
20487
|
+
" snipara_companion_guard --ack-review-only",
|
|
20488
|
+
" snipara_guard_status=$?",
|
|
20489
|
+
' if [ "$snipara_guard_status" -eq 0 ]; then',
|
|
20490
|
+
" snipara_companion_guard",
|
|
20491
|
+
" snipara_guard_status=$?",
|
|
20492
|
+
" fi",
|
|
20493
|
+
' if [ "$snipara_guard_status" -ne 0 ]; then',
|
|
20494
|
+
' exit "$snipara_guard_status"',
|
|
20495
|
+
" fi",
|
|
20496
|
+
" else",
|
|
20497
|
+
" snipara_companion_guard",
|
|
20498
|
+
" fi",
|
|
20473
20499
|
"fi",
|
|
20474
20500
|
collaborationHookBlockMarker(hookName, "end")
|
|
20475
20501
|
].join("\n");
|
|
@@ -32606,6 +32632,7 @@ async function queryCommand(options) {
|
|
|
32606
32632
|
const result = await client.queryContext(options.query, options.maxTokens || 8e3, {
|
|
32607
32633
|
searchMode,
|
|
32608
32634
|
includeAnswerPack: options.includeAnswerPack,
|
|
32635
|
+
minimumChangeMode: options.minimumChangeMode,
|
|
32609
32636
|
autoDecompose: options.autoDecompose,
|
|
32610
32637
|
includeSharedContext: options.includeSharedContext
|
|
32611
32638
|
});
|
|
@@ -43943,7 +43970,7 @@ program.command("memory-guard").description(
|
|
|
43943
43970
|
);
|
|
43944
43971
|
program.command("query").description(
|
|
43945
43972
|
"Search project documents, parsed files, and current truth through hosted Snipara context"
|
|
43946
|
-
).requiredOption("-q, --query <query>", "Search query").option("-m, --max-tokens <number>", "Maximum tokens", "8000").option("--search-mode <mode>", "Search mode: keyword|semantic|hybrid", "hybrid").option("--timeout-ms <number>", "Hosted context query timeout in milliseconds", "30000").option("--no-answer-pack", "Skip Answer Pack generation").option("--no-auto-decompose", "Disable automatic query decomposition").option("--no-shared-context", "Exclude linked shared context").option(
|
|
43973
|
+
).requiredOption("-q, --query <query>", "Search query").option("-m, --max-tokens <number>", "Maximum tokens", "8000").option("--search-mode <mode>", "Search mode: keyword|semantic|hybrid", "hybrid").option("--timeout-ms <number>", "Hosted context query timeout in milliseconds", "30000").option("--no-answer-pack", "Skip Answer Pack generation").option("--minimum-change-mode <mode>", "off|review (opt-in non-blocking review)", "off").option("--no-auto-decompose", "Disable automatic query decomposition").option("--no-shared-context", "Exclude linked shared context").option(
|
|
43947
43974
|
"--follow-recommendation",
|
|
43948
43975
|
"Automatically execute the recommended structural tool when Snipara returns one"
|
|
43949
43976
|
).option("--json", "Print raw JSON").action(async (options) => {
|
|
@@ -43953,6 +43980,7 @@ program.command("query").description(
|
|
|
43953
43980
|
searchMode: options.searchMode,
|
|
43954
43981
|
timeoutMs: parseInt(options.timeoutMs, 10),
|
|
43955
43982
|
includeAnswerPack: options.answerPack !== false,
|
|
43983
|
+
minimumChangeMode: resolveMinimumChangeMode(options.minimumChangeMode),
|
|
43956
43984
|
autoDecompose: options.autoDecompose !== false,
|
|
43957
43985
|
includeSharedContext: options.sharedContext !== false,
|
|
43958
43986
|
followRecommendation: Boolean(options.followRecommendation),
|
|
@@ -45264,7 +45292,7 @@ collaboration.command("ide-status").description("Print compact JSON status for I
|
|
|
45264
45292
|
json: options.json
|
|
45265
45293
|
});
|
|
45266
45294
|
});
|
|
45267
|
-
program.command("impact").description("Run bounded code impact with automatic local, hosted, or hybrid source selection").argument("[filePath]", "Source file to analyze").option("-q, --qualified-name <qualifiedName>", "Qualified symbol name").option("--symbol-key <symbolKey>", "Stable graph symbol key").option("-f, --file-path <filePath>", "Source file to analyze").option("--changed-files <changedFiles...>", "Changed files to analyze").option("--diff-summary <diffSummary>", "Natural-language summary of the change").option("-d, --depth <number>", "Transitive traversal depth", "3").option("--transitive", "Enable transitive traversal (enabled by default)").option("--direction <direction>", "in|out|both", "both").option("-e, --edge-kinds <edgeKinds...>", "Edge kinds to traverse").option("--max-nodes <number>", "Maximum graph nodes to visit", "500").option("-l, --limit <number>", "Maximum impact entries", "50").option("--source <source>", "auto|local|hosted|hybrid", "auto").option("--fallback-hosted", "Augment the local result with hosted graph context").option("--cached", "When local is selected, use the cached overlay if present").option("--max-files <number>", "Maximum supported code files for local overlay", "2000").option("--json", "Print raw JSON").action(async (filePath, options) => {
|
|
45295
|
+
program.command("impact").description("Run bounded code impact with automatic local, hosted, or hybrid source selection").argument("[filePath]", "Source file to analyze").option("-q, --qualified-name <qualifiedName>", "Qualified symbol name").option("--symbol-key <symbolKey>", "Stable graph symbol key").option("-f, --file-path <filePath>", "Source file to analyze").option("--changed-files <changedFiles...>", "Changed files to analyze").option("--diff-summary <diffSummary>", "Natural-language summary of the change").option("-d, --depth <number>", "Transitive traversal depth", "3").option("--transitive", "Enable transitive traversal (enabled by default)").option("--direction <direction>", "in|out|both", "both").option("-e, --edge-kinds <edgeKinds...>", "Edge kinds to traverse").option("--max-nodes <number>", "Maximum graph nodes to visit", "500").option("-l, --limit <number>", "Maximum impact entries", "50").option("--source <source>", "auto|local|hosted|hybrid", "auto").option("--minimum-change-mode <mode>", "off|review (opt-in non-blocking review)", "off").option("--fallback-hosted", "Augment the local result with hosted graph context").option("--cached", "When local is selected, use the cached overlay if present").option("--max-files <number>", "Maximum supported code files for local overlay", "2000").option("--json", "Print raw JSON").action(async (filePath, options) => {
|
|
45268
45296
|
await codeGraphAutoSourceCommand("impact", {
|
|
45269
45297
|
qualifiedName: options.qualifiedName,
|
|
45270
45298
|
symbolKey: options.symbolKey,
|
|
@@ -45278,6 +45306,7 @@ program.command("impact").description("Run bounded code impact with automatic lo
|
|
|
45278
45306
|
maxNodes: parseInt(options.maxNodes, 10),
|
|
45279
45307
|
limit: parseInt(options.limit, 10),
|
|
45280
45308
|
source: options.source,
|
|
45309
|
+
minimumChangeMode: resolveMinimumChangeMode(options.minimumChangeMode),
|
|
45281
45310
|
fallbackHosted: Boolean(options.fallbackHosted),
|
|
45282
45311
|
cached: Boolean(options.cached),
|
|
45283
45312
|
maxFiles: parseInt(options.maxFiles, 10),
|
|
@@ -45529,7 +45558,7 @@ code.addCommand(
|
|
|
45529
45558
|
});
|
|
45530
45559
|
})
|
|
45531
45560
|
).addCommand(
|
|
45532
|
-
new import_commander.Command("impact").description("Run the primary agent-ready code impact gate with automatic source selection").argument("[filePath]", "Source file to analyze").option("-q, --qualified-name <qualifiedName>", "Qualified symbol name").option("--symbol-key <symbolKey>", "Stable graph symbol key").option("-f, --file-path <filePath>", "Source file to analyze").option("--changed-files <changedFiles...>", "Changed files to analyze").option("--diff-summary <diffSummary>", "Natural-language summary of the change").option("-d, --depth <number>", "Transitive traversal depth", "3").option("--transitive", "Enable transitive traversal (enabled by default)").option("--direction <direction>", "in|out|both", "both").option("-e, --edge-kinds <edgeKinds...>", "Edge kinds to traverse").option("--max-nodes <number>", "Maximum graph nodes to visit", "500").option("-l, --limit <number>", "Maximum impact entries", "50").option("--source <source>", "auto|local|hosted|hybrid", "auto").option("--fallback-hosted", "Augment the local result with hosted graph context").option("--cached", "When local is selected, use the cached overlay if present").option("--max-files <number>", "Maximum supported code files for local overlay", "2000").option("--json", "Print raw JSON").action(async (filePath, options) => {
|
|
45561
|
+
new import_commander.Command("impact").description("Run the primary agent-ready code impact gate with automatic source selection").argument("[filePath]", "Source file to analyze").option("-q, --qualified-name <qualifiedName>", "Qualified symbol name").option("--symbol-key <symbolKey>", "Stable graph symbol key").option("-f, --file-path <filePath>", "Source file to analyze").option("--changed-files <changedFiles...>", "Changed files to analyze").option("--diff-summary <diffSummary>", "Natural-language summary of the change").option("-d, --depth <number>", "Transitive traversal depth", "3").option("--transitive", "Enable transitive traversal (enabled by default)").option("--direction <direction>", "in|out|both", "both").option("-e, --edge-kinds <edgeKinds...>", "Edge kinds to traverse").option("--max-nodes <number>", "Maximum graph nodes to visit", "500").option("-l, --limit <number>", "Maximum impact entries", "50").option("--source <source>", "auto|local|hosted|hybrid", "auto").option("--minimum-change-mode <mode>", "off|review (opt-in non-blocking review)", "off").option("--fallback-hosted", "Augment the local result with hosted graph context").option("--cached", "When local is selected, use the cached overlay if present").option("--max-files <number>", "Maximum supported code files for local overlay", "2000").option("--json", "Print raw JSON").action(async (filePath, options) => {
|
|
45533
45562
|
await codeGraphAutoSourceCommand("impact", {
|
|
45534
45563
|
qualifiedName: options.qualifiedName,
|
|
45535
45564
|
symbolKey: options.symbolKey,
|
|
@@ -45543,6 +45572,7 @@ code.addCommand(
|
|
|
45543
45572
|
maxNodes: parseInt(options.maxNodes, 10),
|
|
45544
45573
|
limit: parseInt(options.limit, 10),
|
|
45545
45574
|
source: options.source,
|
|
45575
|
+
minimumChangeMode: resolveMinimumChangeMode(options.minimumChangeMode),
|
|
45546
45576
|
fallbackHosted: Boolean(options.fallbackHosted),
|
|
45547
45577
|
cached: Boolean(options.cached),
|
|
45548
45578
|
maxFiles: parseInt(options.maxFiles, 10),
|
|
@@ -46093,6 +46123,7 @@ if (require.main === module) {
|
|
|
46093
46123
|
resolveFeatureArtifactPaths,
|
|
46094
46124
|
resolveFullWorkflowTokenBudget,
|
|
46095
46125
|
resolveLocalWorkerRoutingDefaults,
|
|
46126
|
+
resolveMinimumChangeMode,
|
|
46096
46127
|
resolveQueryFromToolInput,
|
|
46097
46128
|
retrieveContextPack,
|
|
46098
46129
|
runMemoryGuardCheck,
|
package/docs/FULL_REFERENCE.md
CHANGED
|
@@ -1117,8 +1117,30 @@ durable memory policy locally.
|
|
|
1117
1117
|
These commands keep local workflow state moving and call hosted Snipara only
|
|
1118
1118
|
where the specific command needs hosted context or memory:
|
|
1119
1119
|
|
|
1120
|
+
#### Canonical command forms
|
|
1121
|
+
|
|
1122
|
+
`workflow run --mode` accepts exactly these values:
|
|
1123
|
+
|
|
1124
|
+
| CLI value | Guide label | Runtime behavior |
|
|
1125
|
+
| ------------- | ------------------- | --------------------------------------------------------------------- |
|
|
1126
|
+
| `lite` | LITE | Small, known-scope work with no mandatory hosted context call |
|
|
1127
|
+
| `standard` | STANDARD | Normal work with context and code-graph follow-up when needed |
|
|
1128
|
+
| `auto` | AUTO | Routes by task intent to `lite`, `standard`, `full`, or `orchestrate` |
|
|
1129
|
+
| `full` | FULL | Managed, phased work with durable context and plan support |
|
|
1130
|
+
| `orchestrate` | FULL + ORCHESTRATED | Explicit deeper orchestration for multi-agent or proof-gate work |
|
|
1131
|
+
|
|
1132
|
+
The root `run` command is the Project Intelligence judgment/release flow.
|
|
1133
|
+
`workflow run` is the workflow-mode runner; they are different commands.
|
|
1134
|
+
Use root `final-commit` as the canonical final closeout. The registered
|
|
1135
|
+
`workflow final-commit` spelling is a compatibility alias. Similarly,
|
|
1136
|
+
`code impact` is the canonical impact gate, root `impact` is its compatibility
|
|
1137
|
+
alias, and `code local impact` is the separate repository-local overlay query.
|
|
1138
|
+
`task-commit` captures a durable task outcome; `workflow phase-commit`
|
|
1139
|
+
records one managed phase and advances the workflow.
|
|
1140
|
+
|
|
1120
1141
|
```bash
|
|
1121
1142
|
npx -y snipara-companion@latest workflow run --mode standard --query "who imports src.mcp_transport"
|
|
1143
|
+
npx -y snipara-companion@latest workflow run --mode auto --query "map the next bounded change"
|
|
1122
1144
|
npx -y snipara-companion@latest workflow run --mode full --include-session-context --query "plan the auth refactor"
|
|
1123
1145
|
npx -y snipara-companion@latest plan --query "plan the auth refactor" --write-plan-file .snipara/workflow/plans/auth-refactor-plan.json
|
|
1124
1146
|
npx -y snipara-companion@latest task-commit --summary "Shipped auth refactor" --files apps/web/src/lib/auth.ts
|
|
@@ -1152,6 +1174,7 @@ snipara-companion workflow producer-review --artifact producer-abc123 --outcome
|
|
|
1152
1174
|
snipara-companion final-commit --summary "Shipped auth hardening and tests" --why "Close the reported session replay gap" --evidence "passed:pnpm test auth" --next-step "Review the first 24 hours of telemetry" --files src/auth.ts tests/auth.test.ts
|
|
1153
1175
|
snipara-companion doctor
|
|
1154
1176
|
snipara-companion doctor --json
|
|
1177
|
+
snipara-companion collaboration guard --profile pre-deploy --enforce
|
|
1155
1178
|
snipara-companion code callers --qualified-name src.mcp_transport.handle_call_tool
|
|
1156
1179
|
snipara-companion code imports --file-path src/mcp_transport.py
|
|
1157
1180
|
snipara-companion code neighbors --qualified-name src.mcp_transport.handle_call_tool --depth 3
|
|
@@ -1675,8 +1698,8 @@ Semantics:
|
|
|
1675
1698
|
- `snipara-companion team-sync what-changed` = prints the local state summary and the hosted What Changed For Me response when configured
|
|
1676
1699
|
- `snipara-companion team-sync sweep` = archives stale local work items after an inactivity threshold; default is 14 days and `--dry-run` previews candidates, actual archive count, and remaining stale work
|
|
1677
1700
|
- `snipara-companion team-sync resume` = reloads local carryover plus the hosted latest handoff and checkpoint-aware resume guidance when available
|
|
1678
|
-
- `snipara-companion final-commit` / `workflow final-commit` = final hosted handoff plus a redacted seven-section closeout report in human output and `.snipara/workflow/final-report.json`; stored phase outcomes, pending Why Capture candidates, non-persisted items, evidence statuses, risks, and the next step remain visibly distinct
|
|
1679
|
-
- `snipara-companion code callers/imports/neighbors/shortest-path/impact` = primary code graph surface for agents with shell access. These commands use `--source auto` by default; clean configured checkouts use hosted MCP, dirty/ahead worktrees use a hosted-base plus local-delta hybrid, and unconfigured projects stay local. Every response reports `sourceSelection` and provenance.
|
|
1701
|
+
- `snipara-companion final-commit` (canonical) / `workflow final-commit` (compatibility alias) = final hosted handoff plus a redacted seven-section closeout report in human output and `.snipara/workflow/final-report.json`; stored phase outcomes, pending Why Capture candidates, non-persisted items, evidence statuses, risks, and the next step remain visibly distinct
|
|
1702
|
+
- `snipara-companion code callers/imports/neighbors/shortest-path/impact` = primary code graph surface for agents with shell access. These commands use `--source auto` by default; clean configured checkouts use hosted MCP, dirty/ahead worktrees use a hosted-base plus local-delta hybrid, and unconfigured projects stay local. Every response reports `sourceSelection` and provenance. The canonical impact spelling is `code impact`; root `impact` remains an alias.
|
|
1680
1703
|
- `snipara-companion code symbol-card` = direct `snipara_code_symbol_card` for an important symbol before editing, with an agent guidance summary before raw JSON
|
|
1681
1704
|
- `snipara-companion code impact --source hosted|local|hybrid` = optional source override. `--fallback-hosted` augments a local query when hosted auth is available; failures remain explicit degraded-local results.
|
|
1682
1705
|
- `snipara-companion code local impact` = explicit repository-local bounded transitive impact. TypeScript uses compiler-AST calls/references/imports; Python and Go use import fallback. Use `--depth`, `--direction`, `--edge-kinds`, and `--max-nodes` to control expansion.
|