@quantiya/codevibe-claude-plugin 2.0.102 → 2.0.103
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/plugin.json +1 -1
- package/node_modules/@quantiya/codevibe-core/dist/appsync/sync-mobile-echo.d.ts +12 -12
- package/node_modules/@quantiya/codevibe-core/dist/appsync/sync-shell-source.d.ts +14 -14
- package/node_modules/@quantiya/codevibe-core/dist/index.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/index.js +676 -653
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/binary-classifier.d.ts +8 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/blob-store.d.ts +5 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/change-manifest.d.ts +5 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/local-executor-impl.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/media-metadata.d.ts +16 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/shadow-protocol.d.ts +22 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/shadow-slice3-cleanups.d.ts +15 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/snapshot-merge.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/task-group-types.d.ts +3 -1
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/team-media-approval.d.ts +78 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/withheld-media.d.ts +14 -0
- package/node_modules/@quantiya/codevibe-core/dist/local-executor/workspace-shadow.d.ts +11 -6
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/agent-turn-degrade.d.ts +14 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/binary-retry-brief.d.ts +8 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/brainstorm-quorum.d.ts +3 -1
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +4779 -2122
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/engine-projection.d.ts +9 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/media-approval.d.ts +112 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/quorum-loop.d.ts +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/review-bundle.d.ts +40 -0
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/review-receipts.d.ts +22 -1
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/types.d.ts +6 -0
- package/node_modules/@quantiya/codevibe-core/dist/tool-activity/types.d.ts +12 -12
- package/node_modules/@quantiya/codevibe-core/package.json +1 -1
- package/package.json +2 -2
package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/engine-projection.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { StoredFileClass } from '../local-executor/binary-classifier';
|
|
1
2
|
import { type ShadowChangeKind } from '../local-executor/shadow-protocol';
|
|
2
3
|
export declare const PROJECTION_BUDGET_BYTES: number;
|
|
3
4
|
export declare const PROJECTION_INLINE_MAX_BYTES: number;
|
|
@@ -22,7 +23,14 @@ export interface ProjectionFile {
|
|
|
22
23
|
* SHA-256 names, so a file listed by its identity line alone is never read or diffed.
|
|
23
24
|
*/
|
|
24
25
|
readExcerpt(maxBytes: number): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* P63 Slice 3 (§8.6): a binary new version's class label. Such a file is sent as its identity line alone —
|
|
28
|
+
* `[codevibe-blob v1] <class>; <size> bytes; sha256 <hex>; review bundle: after/<path>` — and never read.
|
|
29
|
+
*/
|
|
30
|
+
blobClass?: string;
|
|
25
31
|
}
|
|
32
|
+
/** The INDEX's class column and the blob identity line's `<class>` (§10.1). */
|
|
33
|
+
export declare function classLabel(cls: StoredFileClass | undefined): string;
|
|
26
34
|
export interface ProjectedFile {
|
|
27
35
|
path: string;
|
|
28
36
|
change_kind: ShadowChangeKind;
|
|
@@ -86,6 +94,7 @@ export declare function projectionFileFromCapture(file: {
|
|
|
86
94
|
blob: string;
|
|
87
95
|
size: number;
|
|
88
96
|
};
|
|
97
|
+
file_class?: StoredFileClass;
|
|
89
98
|
},
|
|
90
99
|
/** The pre-task text when the real file still matches its recorded base hash; null otherwise (S2-5). */
|
|
91
100
|
readBase: () => Promise<string | null>,
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { ShadowDiffFile } from '../local-executor/shadow-protocol';
|
|
2
|
+
import type { WithheldMediaChange } from '../local-executor/withheld-media';
|
|
3
|
+
import type { OrchestrationAction, OrchestrationState } from './types';
|
|
4
|
+
import type { WorkspaceOutcomeSink } from './workspace-terminal-coordinator';
|
|
5
|
+
/** The pending kind: the media question for one subject (a task id, or `group:<taskGroupId>`). */
|
|
6
|
+
export interface MediaApprovalState {
|
|
7
|
+
taskId: string;
|
|
8
|
+
}
|
|
9
|
+
/** At most this many files are named in the question; the rest are counted (S1R1-N5). */
|
|
10
|
+
export declare const MEDIA_QUESTION_MAX_FILES = 5;
|
|
11
|
+
/** "320 KB", "312 MB", "1.4 GB" (decimal units, as the phone and Finder show them). */
|
|
12
|
+
export declare function humanBytes(bytes: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* The question asked before a reviewed change with media is applied, e.g. "Task #2 changes 2 media files: `intro.mp4`
|
|
15
|
+
* (video, 312 MB, 1:04), `clip.m4a` (audio, 320 KB, 0:45). Apply all changes? Reply yes to apply or no to keep your
|
|
16
|
+
* originals." Beyond `MEDIA_QUESTION_MAX_FILES` files the rest are counted with their total size. A team's question
|
|
17
|
+
* names the team ("Team #2 changes …"), matching its decline notice.
|
|
18
|
+
*/
|
|
19
|
+
export declare function mediaApprovalQuestion(taskLabel: string, files: ReadonlyArray<{
|
|
20
|
+
path: string;
|
|
21
|
+
change_kind: string;
|
|
22
|
+
label: string;
|
|
23
|
+
size: number | null;
|
|
24
|
+
duration: string | null;
|
|
25
|
+
}>, subject?: 'Task' | 'Team'): string;
|
|
26
|
+
/** The question for a list of withheld changes. */
|
|
27
|
+
export declare function questionFor(label: string, withheld: readonly WithheldMediaChange[], subject?: 'Task' | 'Team'): string;
|
|
28
|
+
/** What the gate needs from its loop. */
|
|
29
|
+
export interface MediaApprovalHost {
|
|
30
|
+
/** The reviewed change (the durable record first, S1R1-N2). */
|
|
31
|
+
reviewed(taskId: string): Promise<readonly ShadowDiffFile[] | undefined>;
|
|
32
|
+
shadow(taskId: string): {
|
|
33
|
+
withheldMediaChanges(files: readonly ShadowDiffFile[]): Promise<WithheldMediaChange[]>;
|
|
34
|
+
} | undefined;
|
|
35
|
+
/** A team track: its bundle is published at once; the group asks before the merged result is applied. */
|
|
36
|
+
isTeamTrack(taskId: string): boolean;
|
|
37
|
+
label(taskId: string): string;
|
|
38
|
+
/** A team's label (its tracks' shared prefix, e.g. "#2" for "#2.1"), or a short id. */
|
|
39
|
+
groupLabel(taskGroupId: string): string;
|
|
40
|
+
promote(taskId: string): Promise<void>;
|
|
41
|
+
discard(taskId: string): Promise<void>;
|
|
42
|
+
halt(text: string): void;
|
|
43
|
+
/** The workspace-outcome record of a task authorized through a user decision (S1R1-F3); read at answer time. */
|
|
44
|
+
outcomeSink(): Pick<WorkspaceOutcomeSink, 'hasTaskResolution' | 'reserveTask' | 'completeTask'> | undefined;
|
|
45
|
+
}
|
|
46
|
+
export declare class MediaApprovalGate {
|
|
47
|
+
private readonly host;
|
|
48
|
+
private asker?;
|
|
49
|
+
private readonly phase;
|
|
50
|
+
private readonly onAnswer;
|
|
51
|
+
constructor(host: MediaApprovalHost);
|
|
52
|
+
/** Install the shell's question asker (it shows the question on the desktop and sends it to the phone, SF-7). */
|
|
53
|
+
setAsker(asker: ((subject: string, question: string) => void) | undefined): void;
|
|
54
|
+
/** The question for `subject` is open (asked and not yet answered). */
|
|
55
|
+
isAsked(subject: string): boolean;
|
|
56
|
+
/** Open a question; `false` when no surface can ask it (the caller fails closed). */
|
|
57
|
+
private open;
|
|
58
|
+
/**
|
|
59
|
+
* The TaskAuthorized promotion. A reviewed change with media is not applied until the user answers; nothing waits on
|
|
60
|
+
* the answer (it arrives as a reply). An interrupted apply replayed at start is not asked again: its apply had begun.
|
|
61
|
+
*/
|
|
62
|
+
promoteOnTaskAuthorized(taskId: string): Promise<void>;
|
|
63
|
+
/** A notice about a team's media question, shown like the gate's own messages (desktop terminal and phone). */
|
|
64
|
+
notice(text: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* A team group's question, asked once before its merged result is applied. Resolves `true` only on "yes"; `false` on
|
|
67
|
+
* any other answer, or at once when no surface can ask (the merge then applies nothing).
|
|
68
|
+
*/
|
|
69
|
+
askForGroup(taskGroupId: string, label: string, withheld: readonly WithheldMediaChange[]): Promise<boolean>;
|
|
70
|
+
/** The local executor's team question: label it, and say so when the answer keeps the user's originals. */
|
|
71
|
+
askForTeam(taskGroupId: string, withheld: readonly WithheldMediaChange[]): Promise<boolean>;
|
|
72
|
+
/** The answer: yes applies the whole reviewed change; anything else applies nothing. A closed question does nothing. */
|
|
73
|
+
resolve(subject: string, approved: boolean): Promise<void>;
|
|
74
|
+
}
|
|
75
|
+
/** The gate of one loop, made on first use (the loop holds no field for it). */
|
|
76
|
+
/** "#2.1" → "#2": a team is labelled by its tracks' shared prefix. */
|
|
77
|
+
/** A team's label (`#N`) from the briefs of its member tasks; the group id's prefix when none is active. */
|
|
78
|
+
export declare function groupLabelFor(briefs: ReadonlyMap<string, {
|
|
79
|
+
taskGroupId: string;
|
|
80
|
+
}>, labelFor: (taskId: string) => string, taskGroupId: string): string;
|
|
81
|
+
export declare function teamLabelFrom(trackLabel: string): string;
|
|
82
|
+
export declare function mediaApprovalGateFor(owner: object, host: () => MediaApprovalHost): MediaApprovalGate;
|
|
83
|
+
/** The shell store as the asker uses it. */
|
|
84
|
+
export interface MediaQuestionStore {
|
|
85
|
+
getState(): Pick<OrchestrationState, 'pendingClarification'>;
|
|
86
|
+
dispatch(action: OrchestrationAction): void;
|
|
87
|
+
subscribe(listener: (state: OrchestrationState) => void): () => void;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* S1R2-F1 — a mention turn (`@agent …`, `@all`) that arrives while the media question holds the pending slot is a fresh
|
|
91
|
+
* request, not an answer: the question is set aside BEFORE the turn's attachment ingest and routing (so the turn sees no
|
|
92
|
+
* pending, no seeded images), and is asked again only when the turn has finished (call the returned release in the
|
|
93
|
+
* turn's `finally`). Returns null when there is nothing to set aside.
|
|
94
|
+
*/
|
|
95
|
+
export declare function setMediaQuestionAside(store: MediaQuestionStore, text: string): (() => void) | null;
|
|
96
|
+
/**
|
|
97
|
+
* Shows one media question at a time in the shell's pending slot. The question is raised outside any user turn, so the
|
|
98
|
+
* turn mirror never carries it to the phone (SF-7): `toPhone` sends it there each time it is shown — not while it
|
|
99
|
+
* waits behind another question, when a reply would answer that other question instead.
|
|
100
|
+
*/
|
|
101
|
+
export declare function installMediaApprovalAsker(gate: MediaApprovalGate | undefined, store: MediaQuestionStore, toPhone?: (text: string) => void): () => void;
|
|
102
|
+
/**
|
|
103
|
+
* The shell side: the reply never reaches the planner; an affirmative reply applies, anything else applies nothing.
|
|
104
|
+
* The answer is taken (the subject leaves `asked`) BEFORE the pending slot is cleared, so the asker never mistakes an
|
|
105
|
+
* answered question for a lost one.
|
|
106
|
+
*/
|
|
107
|
+
export declare function handleMediaApprovalReply(args: {
|
|
108
|
+
gate: Pick<MediaApprovalGate, 'resolve'> | undefined;
|
|
109
|
+
taskId: string;
|
|
110
|
+
affirmative: boolean;
|
|
111
|
+
dispatch: (action: OrchestrationAction) => void;
|
|
112
|
+
}): Promise<void>;
|
|
@@ -7,6 +7,7 @@ import type { LocalExecutor } from '../local-executor';
|
|
|
7
7
|
import type { ClassBInbound, QueuedWorkEndedPayload } from '../local-executor/types';
|
|
8
8
|
import type { ImageAttachment } from './types';
|
|
9
9
|
import { type TaskAuditSummaryModel, type ReviewHistorySnapshot, type UserDecisionRecord } from './audit-summary';
|
|
10
|
+
import { type MediaApprovalGate } from './media-approval';
|
|
10
11
|
import type { DecryptedReviewSummaryInput } from './gate-prompts';
|
|
11
12
|
import type { ShellEventEmit, ShellEventEmitResult } from './emit-shell-event';
|
|
12
13
|
import { type ImplementorMode } from '../local-executor/implementor-argv';
|
|
@@ -1645,6 +1646,8 @@ export declare class QuorumLoop {
|
|
|
1645
1646
|
setTaskOrdinalSink(sink: TaskOrdinalSink | undefined): void;
|
|
1646
1647
|
/** P46a C3 — install the desktop-local apply-conflict menu sink. */
|
|
1647
1648
|
setApplyConflictSink(sink: ((menu: ApplyConflictMenu) => void) | undefined): void;
|
|
1649
|
+
/** P63 Slice 3 §9.5 — this loop's media-approval gate (media-approval.ts): TaskAuthorized promotes through it. */
|
|
1650
|
+
mediaApproval(): MediaApprovalGate;
|
|
1648
1651
|
/** P46a C2 — install the retry-started notifier (the shell records the lifecycle row). */
|
|
1649
1652
|
setRetryStartedSink(sink: ((info: {
|
|
1650
1653
|
taskId: string;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { type BlobStore } from '../local-executor/blob-store';
|
|
2
|
+
import type { StoredFileClass } from '../local-executor/binary-classifier';
|
|
2
3
|
import type { BlobRef } from '../local-executor/change-manifest';
|
|
3
4
|
import { type ShadowChangeKind } from '../local-executor/shadow-protocol';
|
|
5
|
+
import { classLabel } from './engine-projection';
|
|
6
|
+
export { classLabel };
|
|
4
7
|
export interface ReviewBundleFile {
|
|
5
8
|
path: string;
|
|
6
9
|
change_kind: ShadowChangeKind;
|
|
@@ -28,6 +31,30 @@ export interface ReviewBundleFile {
|
|
|
28
31
|
size: number | null;
|
|
29
32
|
changed: boolean;
|
|
30
33
|
};
|
|
34
|
+
/** Slice 3 (§10.1): the new version's class when it is not text (absent: text). */
|
|
35
|
+
afterClass?: StoredFileClass;
|
|
36
|
+
/** Slice 3 (§10.1): the user's version's class when it is not text (absent: text). */
|
|
37
|
+
beforeClass?: StoredFileClass;
|
|
38
|
+
}
|
|
39
|
+
/** How the bundle presented a change (§10.1): text diffed, Office extracted, a file to open, or withheld. */
|
|
40
|
+
export type ReviewEntryKind = 'text' | 'office' | 'view' | 'withheld';
|
|
41
|
+
export interface ReviewBundleEntry {
|
|
42
|
+
path: string;
|
|
43
|
+
change_kind: ShadowChangeKind;
|
|
44
|
+
kind: ReviewEntryKind;
|
|
45
|
+
/** Withheld (§8.1, §9.5): what the INDEX and the phone question say about it; its bytes are not in the bundle. */
|
|
46
|
+
withheld?: {
|
|
47
|
+
label: string;
|
|
48
|
+
size: number;
|
|
49
|
+
sha256: string;
|
|
50
|
+
container: string;
|
|
51
|
+
durationSeconds: number | null;
|
|
52
|
+
};
|
|
53
|
+
/** Office (§8.4): whether the extracted text changed, and the changed parts marked "no text change". */
|
|
54
|
+
office?: {
|
|
55
|
+
textChanged: boolean;
|
|
56
|
+
noTextParts: string[];
|
|
57
|
+
};
|
|
31
58
|
}
|
|
32
59
|
/** §5.7 / §7.4 — what the INDEX lists besides the changed files (R1-F6). */
|
|
33
60
|
export interface ReviewIndexContext {
|
|
@@ -55,7 +82,20 @@ export interface ReviewBundleRecord {
|
|
|
55
82
|
sha256: string;
|
|
56
83
|
size: number;
|
|
57
84
|
}>;
|
|
85
|
+
/** Slice 3: how each change was presented (receipts and the media question read this). */
|
|
86
|
+
entries?: ReviewBundleEntry[];
|
|
58
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* §8.2 (S2R1-F1) — the masked-original grant for a macOS reviewer: the original folder with a literal deny for every changed
|
|
90
|
+
* file whose bytes the bundle withholds, whatever its name. Fails closed to the bundle only (no original) when the record
|
|
91
|
+
* does not say how each change was presented or when the withheld files exceed the literal cap.
|
|
92
|
+
*/
|
|
93
|
+
export declare function maskedOriginalGrant(record: ReviewBundleRecord, dir: string): {
|
|
94
|
+
maskedOriginal: {
|
|
95
|
+
dir: string;
|
|
96
|
+
changedWithheld: readonly string[];
|
|
97
|
+
};
|
|
98
|
+
} | Record<string, never>;
|
|
59
99
|
/** Build the bundle. `bundleDir` must not exist; its parent must. Returns the hash record to re-check on return. */
|
|
60
100
|
export declare function buildReviewBundle(input: {
|
|
61
101
|
bundleDir: string;
|
|
@@ -19,10 +19,31 @@ export interface ReceiptFile {
|
|
|
19
19
|
sha256: string;
|
|
20
20
|
hasAfter: boolean;
|
|
21
21
|
hasBefore: boolean;
|
|
22
|
+
/** Slice 3 (§8.4): how the bundle presented the change (absent: text). */
|
|
23
|
+
entryKind?: 'text' | 'office' | 'view' | 'withheld';
|
|
24
|
+
/** Office: whether the extracted text changed, and the changed parts marked "no text change". */
|
|
25
|
+
office?: {
|
|
26
|
+
textChanged: boolean;
|
|
27
|
+
noTextParts: readonly string[];
|
|
28
|
+
};
|
|
22
29
|
}
|
|
30
|
+
/** Slice 3 (§8.4): a receipt file's entry kind and Office facts, from the bundle record's entry for `filePath`. */
|
|
31
|
+
export declare function receiptEntryFields(entries: ReadonlyArray<{
|
|
32
|
+
path: string;
|
|
33
|
+
kind: NonNullable<ReceiptFile['entryKind']>;
|
|
34
|
+
office?: {
|
|
35
|
+
textChanged: boolean;
|
|
36
|
+
noTextParts: string[];
|
|
37
|
+
};
|
|
38
|
+
}> | undefined, filePath: string): Pick<ReceiptFile, 'entryKind' | 'office'>;
|
|
23
39
|
export interface ReceiptRequest {
|
|
24
40
|
id: string;
|
|
25
|
-
|
|
41
|
+
/**
|
|
42
|
+
* line: a changed line, exact (whitespace-normalised); index: the INDEX row's SHA-256 prefix; parts (Slice 3, Office):
|
|
43
|
+
* every changed part marked "no text change", each named; describe (Slice 3, image/PDF): a one-line description,
|
|
44
|
+
* presence only — not machine-checkable (§8.4).
|
|
45
|
+
*/
|
|
46
|
+
kind: 'line' | 'index' | 'parts' | 'describe';
|
|
26
47
|
/** Bundle-relative file the request names (`after/<p>`, `before/<p>` or `INDEX.md`). */
|
|
27
48
|
file: string;
|
|
28
49
|
/** 1-based line number (kind `line`). */
|
|
@@ -485,6 +485,9 @@ export interface TaskStartConfirmationState {
|
|
|
485
485
|
singleFallbackBrief?: string;
|
|
486
486
|
};
|
|
487
487
|
}
|
|
488
|
+
/** P63 Slice 3 §9.5 — the media question's pending kind (media-approval.ts). */
|
|
489
|
+
import type { MediaApprovalState } from './media-approval';
|
|
490
|
+
export type { MediaApprovalState };
|
|
488
491
|
/**
|
|
489
492
|
* P63 §6.4 — a START refused because its implementor cannot be confined on this machine. The question offers to run
|
|
490
493
|
* it unconfined THIS ONCE; only an affirmative reply re-issues exactly these start arguments with `allowUnconfined`.
|
|
@@ -537,6 +540,8 @@ export interface PendingClarification {
|
|
|
537
540
|
startConfirmation?: TaskStartConfirmationState;
|
|
538
541
|
/** P63 §6.4 — its own pending kind beside `startConfirmation`: the "run it unconfined this once?" question. */
|
|
539
542
|
confinementOptIn?: ConfinementOptInState;
|
|
543
|
+
/** P63 Slice 3 §9.5 — its own pending kind: apply a reviewed change that includes media files? */
|
|
544
|
+
mediaApproval?: MediaApprovalState;
|
|
540
545
|
}
|
|
541
546
|
/**
|
|
542
547
|
* A1a #3/#4 — one numbered choice in a `PendingPlannerOffer`. Contract-ready
|
|
@@ -1047,6 +1052,7 @@ export type OrchestrationAction = {
|
|
|
1047
1052
|
brainstorm?: BrainstormContextMetadata;
|
|
1048
1053
|
startConfirmation?: TaskStartConfirmationState;
|
|
1049
1054
|
confinementOptIn?: ConfinementOptInState;
|
|
1055
|
+
mediaApproval?: MediaApprovalState;
|
|
1050
1056
|
} | {
|
|
1051
1057
|
type: 'EVENT_RECEIVED';
|
|
1052
1058
|
event: EventStreamEntry;
|
|
@@ -71,11 +71,11 @@ export declare const ToolActivityGroupSchema: z.ZodObject<{
|
|
|
71
71
|
id: string;
|
|
72
72
|
ts: string;
|
|
73
73
|
}[];
|
|
74
|
+
target?: string | undefined;
|
|
74
75
|
detail?: {
|
|
75
76
|
i: number;
|
|
76
77
|
digest: string;
|
|
77
78
|
}[] | undefined;
|
|
78
|
-
target?: string | undefined;
|
|
79
79
|
}, {
|
|
80
80
|
count: number;
|
|
81
81
|
tool: string;
|
|
@@ -83,11 +83,11 @@ export declare const ToolActivityGroupSchema: z.ZodObject<{
|
|
|
83
83
|
id: string;
|
|
84
84
|
ts: string;
|
|
85
85
|
}[];
|
|
86
|
+
target?: string | undefined;
|
|
86
87
|
detail?: {
|
|
87
88
|
i: number;
|
|
88
89
|
digest: string;
|
|
89
90
|
}[] | undefined;
|
|
90
|
-
target?: string | undefined;
|
|
91
91
|
}>;
|
|
92
92
|
export type ToolActivityGroup = z.infer<typeof ToolActivityGroupSchema>;
|
|
93
93
|
/**
|
|
@@ -135,11 +135,11 @@ export declare const ToolActivityManifestSchema: z.ZodObject<{
|
|
|
135
135
|
id: string;
|
|
136
136
|
ts: string;
|
|
137
137
|
}[];
|
|
138
|
+
target?: string | undefined;
|
|
138
139
|
detail?: {
|
|
139
140
|
i: number;
|
|
140
141
|
digest: string;
|
|
141
142
|
}[] | undefined;
|
|
142
|
-
target?: string | undefined;
|
|
143
143
|
}, {
|
|
144
144
|
count: number;
|
|
145
145
|
tool: string;
|
|
@@ -147,11 +147,11 @@ export declare const ToolActivityManifestSchema: z.ZodObject<{
|
|
|
147
147
|
id: string;
|
|
148
148
|
ts: string;
|
|
149
149
|
}[];
|
|
150
|
+
target?: string | undefined;
|
|
150
151
|
detail?: {
|
|
151
152
|
i: number;
|
|
152
153
|
digest: string;
|
|
153
154
|
}[] | undefined;
|
|
154
|
-
target?: string | undefined;
|
|
155
155
|
}>, "many">;
|
|
156
156
|
continues: z.ZodOptional<z.ZodBoolean>;
|
|
157
157
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -162,11 +162,11 @@ export declare const ToolActivityManifestSchema: z.ZodObject<{
|
|
|
162
162
|
id: string;
|
|
163
163
|
ts: string;
|
|
164
164
|
}[];
|
|
165
|
+
target?: string | undefined;
|
|
165
166
|
detail?: {
|
|
166
167
|
i: number;
|
|
167
168
|
digest: string;
|
|
168
169
|
}[] | undefined;
|
|
169
|
-
target?: string | undefined;
|
|
170
170
|
}[];
|
|
171
171
|
windowStart?: string | undefined;
|
|
172
172
|
windowEnd?: string | undefined;
|
|
@@ -181,11 +181,11 @@ export declare const ToolActivityManifestSchema: z.ZodObject<{
|
|
|
181
181
|
id: string;
|
|
182
182
|
ts: string;
|
|
183
183
|
}[];
|
|
184
|
+
target?: string | undefined;
|
|
184
185
|
detail?: {
|
|
185
186
|
i: number;
|
|
186
187
|
digest: string;
|
|
187
188
|
}[] | undefined;
|
|
188
|
-
target?: string | undefined;
|
|
189
189
|
}[];
|
|
190
190
|
windowStart?: string | undefined;
|
|
191
191
|
windowEnd?: string | undefined;
|
|
@@ -254,11 +254,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
|
|
|
254
254
|
id: string;
|
|
255
255
|
ts: string;
|
|
256
256
|
}[];
|
|
257
|
+
target?: string | undefined;
|
|
257
258
|
detail?: {
|
|
258
259
|
i: number;
|
|
259
260
|
digest: string;
|
|
260
261
|
}[] | undefined;
|
|
261
|
-
target?: string | undefined;
|
|
262
262
|
}, {
|
|
263
263
|
count: number;
|
|
264
264
|
tool: string;
|
|
@@ -266,11 +266,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
|
|
|
266
266
|
id: string;
|
|
267
267
|
ts: string;
|
|
268
268
|
}[];
|
|
269
|
+
target?: string | undefined;
|
|
269
270
|
detail?: {
|
|
270
271
|
i: number;
|
|
271
272
|
digest: string;
|
|
272
273
|
}[] | undefined;
|
|
273
|
-
target?: string | undefined;
|
|
274
274
|
}>, "many">;
|
|
275
275
|
continues: z.ZodOptional<z.ZodBoolean>;
|
|
276
276
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -281,11 +281,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
|
|
|
281
281
|
id: string;
|
|
282
282
|
ts: string;
|
|
283
283
|
}[];
|
|
284
|
+
target?: string | undefined;
|
|
284
285
|
detail?: {
|
|
285
286
|
i: number;
|
|
286
287
|
digest: string;
|
|
287
288
|
}[] | undefined;
|
|
288
|
-
target?: string | undefined;
|
|
289
289
|
}[];
|
|
290
290
|
windowStart?: string | undefined;
|
|
291
291
|
windowEnd?: string | undefined;
|
|
@@ -300,11 +300,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
|
|
|
300
300
|
id: string;
|
|
301
301
|
ts: string;
|
|
302
302
|
}[];
|
|
303
|
+
target?: string | undefined;
|
|
303
304
|
detail?: {
|
|
304
305
|
i: number;
|
|
305
306
|
digest: string;
|
|
306
307
|
}[] | undefined;
|
|
307
|
-
target?: string | undefined;
|
|
308
308
|
}[];
|
|
309
309
|
windowStart?: string | undefined;
|
|
310
310
|
windowEnd?: string | undefined;
|
|
@@ -327,11 +327,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
|
|
|
327
327
|
id: string;
|
|
328
328
|
ts: string;
|
|
329
329
|
}[];
|
|
330
|
+
target?: string | undefined;
|
|
330
331
|
detail?: {
|
|
331
332
|
i: number;
|
|
332
333
|
digest: string;
|
|
333
334
|
}[] | undefined;
|
|
334
|
-
target?: string | undefined;
|
|
335
335
|
}[];
|
|
336
336
|
windowStart?: string | undefined;
|
|
337
337
|
windowEnd?: string | undefined;
|
|
@@ -354,11 +354,11 @@ export declare const ToolActivityOutboxEnvelopeSchema: z.ZodObject<{
|
|
|
354
354
|
id: string;
|
|
355
355
|
ts: string;
|
|
356
356
|
}[];
|
|
357
|
+
target?: string | undefined;
|
|
357
358
|
detail?: {
|
|
358
359
|
i: number;
|
|
359
360
|
digest: string;
|
|
360
361
|
}[] | undefined;
|
|
361
|
-
target?: string | undefined;
|
|
362
362
|
}[];
|
|
363
363
|
windowStart?: string | undefined;
|
|
364
364
|
windowEnd?: string | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quantiya/codevibe-claude-plugin",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.103",
|
|
4
4
|
"description": "Control Claude Code from your iPhone and Android — real-time sync, approve file edits, send prompts by voice. Part of CodeVibe.",
|
|
5
5
|
"main": "dist/server.js",
|
|
6
6
|
"codevibe": {
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"node": ">=22.0.0"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@quantiya/codevibe-core": "^2.0.
|
|
51
|
+
"@quantiya/codevibe-core": "^2.0.95",
|
|
52
52
|
"@quantiya/quorum-core": "^1.0.1",
|
|
53
53
|
"dotenv": "^16.6.1",
|
|
54
54
|
"express": "^5.1.0",
|