@tarquinen/opencode-dcp 3.1.12 → 3.1.13
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/README.md +14 -9
- package/dist/index.js +105 -39
- package/dist/index.js.map +1 -1
- package/dist/lib/commands/context.d.ts +15 -0
- package/dist/lib/commands/context.d.ts.map +1 -1
- package/dist/lib/commands/help.d.ts +1 -0
- package/dist/lib/commands/help.d.ts.map +1 -1
- package/dist/lib/commands/manual.d.ts +1 -1
- package/dist/lib/commands/manual.d.ts.map +1 -1
- package/dist/lib/commands/stats.d.ts +10 -0
- package/dist/lib/commands/stats.d.ts.map +1 -1
- package/dist/lib/compress/pipeline.d.ts.map +1 -1
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/state/persistence.d.ts +3 -0
- package/dist/lib/state/persistence.d.ts.map +1 -1
- package/dist/lib/state/state.d.ts +1 -0
- package/dist/lib/state/state.d.ts.map +1 -1
- package/dist/lib/tui/commands.d.ts +3 -0
- package/dist/lib/tui/commands.d.ts.map +1 -0
- package/dist/lib/tui/data.d.ts +14 -0
- package/dist/lib/tui/data.d.ts.map +1 -0
- package/dist/lib/tui/dialogs.d.ts +30 -0
- package/dist/lib/tui/dialogs.d.ts.map +1 -0
- package/dist/lib/tui/format.d.ts +4 -0
- package/dist/lib/tui/format.d.ts.map +1 -0
- package/dist/lib/tui/modals.d.ts +10 -0
- package/dist/lib/tui/modals.d.ts.map +1 -0
- package/dist/lib/tui/types.d.ts +15 -0
- package/dist/lib/tui/types.d.ts.map +1 -0
- package/dist/lib/tui/ui.d.ts +48 -0
- package/dist/lib/tui/ui.d.ts.map +1 -0
- package/dist/tui.d.ts +7 -0
- package/dist/tui.d.ts.map +1 -0
- package/lib/auth.ts +37 -0
- package/lib/commands/compression-targets.ts +137 -0
- package/lib/commands/context.ts +305 -0
- package/lib/commands/decompress.ts +275 -0
- package/lib/commands/help.ts +76 -0
- package/lib/commands/index.ts +11 -0
- package/lib/commands/manual.ts +127 -0
- package/lib/commands/recompress.ts +224 -0
- package/lib/commands/stats.ts +159 -0
- package/lib/commands/sweep.ts +268 -0
- package/lib/compress/index.ts +3 -0
- package/lib/compress/message-utils.ts +250 -0
- package/lib/compress/message.ts +145 -0
- package/lib/compress/pipeline.ts +108 -0
- package/lib/compress/protected-content.ts +208 -0
- package/lib/compress/range-utils.ts +308 -0
- package/lib/compress/range.ts +192 -0
- package/lib/compress/search.ts +267 -0
- package/lib/compress/state.ts +268 -0
- package/lib/compress/timing.ts +77 -0
- package/lib/compress/types.ts +108 -0
- package/lib/compress-permission.ts +25 -0
- package/lib/config.ts +1007 -0
- package/lib/hooks.ts +375 -0
- package/lib/host-permissions.ts +101 -0
- package/lib/logger.ts +226 -0
- package/lib/message-ids.ts +172 -0
- package/lib/messages/index.ts +8 -0
- package/lib/messages/inject/inject.ts +215 -0
- package/lib/messages/inject/subagent-results.ts +82 -0
- package/lib/messages/inject/utils.ts +374 -0
- package/lib/messages/priority.ts +102 -0
- package/lib/messages/prune.ts +233 -0
- package/lib/messages/query.ts +72 -0
- package/lib/messages/reasoning-strip.ts +40 -0
- package/lib/messages/shape.ts +50 -0
- package/lib/messages/sync.ts +124 -0
- package/lib/messages/utils.ts +185 -0
- package/lib/prompts/compress-message.ts +43 -0
- package/lib/prompts/compress-range.ts +60 -0
- package/lib/prompts/context-limit-nudge.ts +18 -0
- package/lib/prompts/extensions/nudge.ts +43 -0
- package/lib/prompts/extensions/system.ts +32 -0
- package/lib/prompts/extensions/tool.ts +35 -0
- package/lib/prompts/index.ts +29 -0
- package/lib/prompts/iteration-nudge.ts +6 -0
- package/lib/prompts/store.ts +467 -0
- package/lib/prompts/system.ts +33 -0
- package/lib/prompts/turn-nudge.ts +10 -0
- package/lib/protected-patterns.ts +128 -0
- package/lib/state/index.ts +4 -0
- package/lib/state/persistence.ts +305 -0
- package/lib/state/state.ts +208 -0
- package/lib/state/tool-cache.ts +98 -0
- package/lib/state/types.ts +111 -0
- package/lib/state/utils.ts +345 -0
- package/lib/strategies/deduplication.ts +127 -0
- package/lib/strategies/index.ts +2 -0
- package/lib/strategies/purge-errors.ts +88 -0
- package/lib/subagents/subagent-results.ts +74 -0
- package/lib/token-utils.ts +164 -0
- package/lib/tui/commands.ts +31 -0
- package/lib/tui/data.ts +73 -0
- package/lib/tui/dialogs.tsx +235 -0
- package/lib/tui/format.ts +25 -0
- package/lib/tui/modals.tsx +92 -0
- package/lib/tui/types.ts +16 -0
- package/lib/tui/ui.tsx +219 -0
- package/lib/ui/notification.ts +347 -0
- package/lib/ui/utils.ts +304 -0
- package/lib/update.ts +185 -0
- package/package.json +18 -5
- package/tui.tsx +26 -0
|
@@ -48,5 +48,20 @@ export interface ContextCommandContext {
|
|
|
48
48
|
sessionId: string;
|
|
49
49
|
messages: WithParts[];
|
|
50
50
|
}
|
|
51
|
+
interface TokenBreakdown {
|
|
52
|
+
system: number;
|
|
53
|
+
user: number;
|
|
54
|
+
assistant: number;
|
|
55
|
+
tools: number;
|
|
56
|
+
toolCount: number;
|
|
57
|
+
toolsInContextCount: number;
|
|
58
|
+
prunedTokens: number;
|
|
59
|
+
prunedToolCount: number;
|
|
60
|
+
prunedMessageCount: number;
|
|
61
|
+
total: number;
|
|
62
|
+
}
|
|
63
|
+
export declare function analyzeContextTokens(state: SessionState, messages: WithParts[]): TokenBreakdown;
|
|
64
|
+
export declare function formatContextMessage(breakdown: TokenBreakdown): string;
|
|
51
65
|
export declare function handleContextCommand(ctx: ContextCommandContext): Promise<void>;
|
|
66
|
+
export {};
|
|
52
67
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../lib/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAQvD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../lib/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAQvD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;AAED,UAAU,cAAc;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,cAAc,CA4J/F;AASD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAwDtE;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CASpF"}
|
|
@@ -13,5 +13,6 @@ export interface HelpCommandContext {
|
|
|
13
13
|
sessionId: string;
|
|
14
14
|
messages: WithParts[];
|
|
15
15
|
}
|
|
16
|
+
export declare function formatHelpMessage(state: SessionState, config: PluginConfig): string;
|
|
16
17
|
export declare function handleHelpCommand(ctx: HelpCommandContext): Promise<void>;
|
|
17
18
|
//# sourceMappingURL=help.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../lib/commands/help.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAKvD,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../lib/commands/help.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAKvD,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;AAwBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAoBnF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9E"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Usage:
|
|
6
6
|
* /dcp manual [on|off] - Toggle manual mode or set explicit state
|
|
7
|
-
* /dcp
|
|
7
|
+
* /dcp-compress [focus] - Trigger manual compress execution
|
|
8
8
|
*/
|
|
9
9
|
import type { Logger } from "../logger";
|
|
10
10
|
import type { SessionState, WithParts } from "../state";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../../lib/commands/manual.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../../lib/commands/manual.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAqC7C,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;AAED,wBAAsB,yBAAyB,CAC3C,GAAG,EAAE,oBAAoB,EACzB,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,0BAA0B,CAC5C,GAAG,EAAE,oBAAoB,EACzB,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB;AAED,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,SAAS,EAAE,EACrB,MAAM,EAAE,MAAM,GACf,IAAI,CA8BN"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { Logger } from "../logger";
|
|
6
6
|
import type { SessionState, WithParts } from "../state";
|
|
7
|
+
import { type AggregatedStats } from "../state/persistence";
|
|
7
8
|
export interface StatsCommandContext {
|
|
8
9
|
client: any;
|
|
9
10
|
state: SessionState;
|
|
@@ -11,5 +12,14 @@ export interface StatsCommandContext {
|
|
|
11
12
|
sessionId: string;
|
|
12
13
|
messages: WithParts[];
|
|
13
14
|
}
|
|
15
|
+
export declare function formatStatsMessage(sessionTokens: number, sessionSummaryTokens: number, sessionTools: number, sessionMessages: number, sessionDurationMs: number, allTime: AggregatedStats): string;
|
|
14
16
|
export declare function handleStatsCommand(ctx: StatsCommandContext): Promise<void>;
|
|
17
|
+
export declare function buildStatsReport(state: SessionState, logger: Logger): Promise<{
|
|
18
|
+
sessionTokens: number;
|
|
19
|
+
sessionSummaryTokens: number;
|
|
20
|
+
sessionTools: number;
|
|
21
|
+
sessionMessages: number;
|
|
22
|
+
sessionDurationMs: number;
|
|
23
|
+
allTime: AggregatedStats;
|
|
24
|
+
}>;
|
|
15
25
|
//# sourceMappingURL=stats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../lib/commands/stats.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../lib/commands/stats.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGvD,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAIhF,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;AAED,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,MAAM,EAC5B,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,eAAe,GACzB,MAAM,CAyBR;AAsCD,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BhF;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;;;;;;;GAuCzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../lib/compress/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAQzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAG5C,UAAU,UAAU;IAChB,GAAG,CAAC,KAAK,EAAE;QACP,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,MAAM,EAAE,MAAM,EAAE,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACpC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjB,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACxC,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,SAAS,EAAE,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;CAC/B;AAED,wBAAsB,cAAc,CAChC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../lib/compress/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAQzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAG5C,UAAU,UAAU;IAChB,GAAG,CAAC,KAAK,EAAE;QACP,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,MAAM,EAAE,MAAM,EAAE,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACpC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjB,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACxC,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,SAAS,EAAE,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;CAC/B;AAED,wBAAsB,cAAc,CAChC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,CAsC1B;AAED,wBAAsB,eAAe,CACjC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,SAAS,EAAE,EACxB,OAAO,EAAE,iBAAiB,EAAE,EAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
package/dist/lib/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAc5C,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AAoBhE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAYhE,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,WAAW,IAGhB,OAAO;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;QAAE,KAAK,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,EACpE,QAAQ;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,mBAwCnC;AAED,wBAAgB,iCAAiC,CAC7C,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,WAAW,EACpB,eAAe,EAAE,sBAAsB,IAEzB,OAAO,EAAE,EAAE,QAAQ;IAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;CAAE,mBAkD7D;AAED,wBAAgB,2BAA2B,CACvC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,sBAAsB,IAGnC,OAAO;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAChE,QAAQ;IAAE,KAAK,EAAE,GAAG,EAAE,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAc5C,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AAoBhE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAYhE,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,WAAW,IAGhB,OAAO;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;QAAE,KAAK,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,EACpE,QAAQ;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,mBAwCnC;AAED,wBAAgB,iCAAiC,CAC7C,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,WAAW,EACpB,eAAe,EAAE,sBAAsB,IAEzB,OAAO,EAAE,EAAE,QAAQ;IAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;CAAE,mBAkD7D;AAED,wBAAgB,2BAA2B,CACvC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,sBAAsB,IAGnC,OAAO;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAChE,QAAQ;IAAE,KAAK,EAAE,GAAG,EAAE,CAAA;CAAE,mBAiH/B;AAED,wBAAgB,yBAAyB,KAEjC,QAAQ;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAChE,QAAQ;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,mBAI/B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IACpD,OAAO;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE,mBAiFtC"}
|
|
@@ -25,6 +25,7 @@ export interface PersistedNudges {
|
|
|
25
25
|
}
|
|
26
26
|
export interface PersistedSessionState {
|
|
27
27
|
sessionName?: string;
|
|
28
|
+
manualMode?: boolean;
|
|
28
29
|
prune: PersistedPrune;
|
|
29
30
|
nudges: PersistedNudges;
|
|
30
31
|
stats: SessionStats;
|
|
@@ -32,6 +33,8 @@ export interface PersistedSessionState {
|
|
|
32
33
|
}
|
|
33
34
|
export declare function saveSessionState(sessionState: SessionState, logger: Logger, sessionName?: string): Promise<void>;
|
|
34
35
|
export declare function loadSessionState(sessionId: string, logger: Logger): Promise<PersistedSessionState | null>;
|
|
36
|
+
export declare function loadManualModeSetting(sessionId: string, logger: Logger): Promise<boolean | undefined>;
|
|
37
|
+
export declare function saveManualModeSetting(sessionId: string, manualMode: boolean, logger: Logger): Promise<void>;
|
|
35
38
|
export interface AggregatedStats {
|
|
36
39
|
totalTokens: number;
|
|
37
40
|
totalTools: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../lib/state/persistence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGvC,oCAAoC;AACpC,MAAM,WAAW,2BAA2B;IACxC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC5C,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,2BAA2B,CAAA;CACzC;AAED,MAAM,WAAW,eAAe;IAC5B,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;CACnC;AAED,MAAM,WAAW,qBAAqB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,cAAc,CAAA;IACrB,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACtB;AAqCD,wBAAsB,gBAAgB,CAClC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../lib/state/persistence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGvC,oCAAoC;AACpC,MAAM,WAAW,2BAA2B;IACxC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC5C,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,2BAA2B,CAAA;CACzC;AAED,MAAM,WAAW,eAAe;IAC5B,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;CACnC;AAED,MAAM,WAAW,qBAAqB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,cAAc,CAAA;IACrB,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACtB;AAqCD,wBAAsB,gBAAgB,CAClC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAsB,gBAAgB,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAwFvC;AA6BD,wBAAsB,qBAAqB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAG9B;AAED,wBAAsB,qBAAqB,CACvC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACvB;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA2ClF"}
|
|
@@ -4,4 +4,5 @@ export declare const checkSession: (client: any, state: SessionState, logger: Lo
|
|
|
4
4
|
export declare function createSessionState(): SessionState;
|
|
5
5
|
export declare function resetSessionState(state: SessionState): void;
|
|
6
6
|
export declare function ensureSessionInitialized(client: any, state: SessionState, sessionId: string, logger: Logger, messages: WithParts[], manualModeEnabled: boolean): Promise<void>;
|
|
7
|
+
export declare function refreshManualMode(state: SessionState, sessionId: string, logger: Logger, manualModeDefault: boolean): Promise<void>;
|
|
7
8
|
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../lib/state/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAsB,SAAS,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAevC,eAAO,MAAM,YAAY,GACrB,QAAQ,GAAG,EACX,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,UAAU,SAAS,EAAE,EACrB,mBAAmB,OAAO,KAC3B,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../lib/state/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAsB,SAAS,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAevC,eAAO,MAAM,YAAY,GACrB,QAAQ,GAAG,EACX,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,UAAU,SAAS,EAAE,EACrB,mBAAmB,OAAO,KAC3B,OAAO,CAAC,IAAI,CAyCd,CAAA;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAqCjD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CA+B3D;AAED,wBAAsB,wBAAwB,CAC1C,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,EAAE,EACrB,iBAAiB,EAAE,OAAO,GAC3B,OAAO,CAAC,IAAI,CAAC,CAgDf;AAED,wBAAsB,iBAAiB,CACnC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,OAAO,GAC3B,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../lib/tui/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEjD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QA4BnE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type PluginConfig } from "../config";
|
|
2
|
+
import { Logger } from "../logger";
|
|
3
|
+
import { type SessionState, type WithParts } from "../state";
|
|
4
|
+
import type { TuiApi } from "./types";
|
|
5
|
+
export declare const logger: Logger;
|
|
6
|
+
export declare function loadConfig(api: TuiApi): PluginConfig;
|
|
7
|
+
export declare function activeSessionID(api: TuiApi): string | undefined;
|
|
8
|
+
export declare function sessionMessages(api: TuiApi, sessionID: string): WithParts[];
|
|
9
|
+
export declare function buildSessionState(sessionID: string, messages: WithParts[], config: PluginConfig): Promise<SessionState>;
|
|
10
|
+
export declare function loadSessionData(api: TuiApi, config: PluginConfig): Promise<{
|
|
11
|
+
state: SessionState;
|
|
12
|
+
messages: WithParts[];
|
|
13
|
+
} | undefined>;
|
|
14
|
+
//# sourceMappingURL=data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../lib/tui/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,EAAsB,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAA;AAGhF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAErC,eAAO,MAAM,MAAM,QAAoB,CAAA;AAEvC,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAMpD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK/D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAQ3E;AAED,wBAAsB,iBAAiB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,SAAS,EAAE,EACrB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,CAAC,CAwBvB;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;;;eAOtE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** @jsxImportSource @opentui/solid */
|
|
2
|
+
import type { PluginConfig } from "../config";
|
|
3
|
+
import type { SessionState, WithParts } from "../state";
|
|
4
|
+
import type { StatsReport, TuiApi } from "./types";
|
|
5
|
+
export declare function StatusDialog(props: {
|
|
6
|
+
api: TuiApi;
|
|
7
|
+
title: string;
|
|
8
|
+
eyebrow: string;
|
|
9
|
+
message: string;
|
|
10
|
+
}): any;
|
|
11
|
+
export declare function ContextDialog(props: {
|
|
12
|
+
api: TuiApi;
|
|
13
|
+
state: SessionState;
|
|
14
|
+
messages: WithParts[];
|
|
15
|
+
onBack: () => void;
|
|
16
|
+
}): any;
|
|
17
|
+
export declare function StatsDialog(props: {
|
|
18
|
+
api: TuiApi;
|
|
19
|
+
report: StatsReport;
|
|
20
|
+
onBack: () => void;
|
|
21
|
+
}): any;
|
|
22
|
+
export declare function PanelDialog(props: {
|
|
23
|
+
api: TuiApi;
|
|
24
|
+
state: SessionState;
|
|
25
|
+
config: PluginConfig;
|
|
26
|
+
onContext: () => void;
|
|
27
|
+
onStats: () => void;
|
|
28
|
+
onManual: (enabled: boolean) => void;
|
|
29
|
+
}): any;
|
|
30
|
+
//# sourceMappingURL=dialogs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialogs.d.ts","sourceRoot":"","sources":["../../../lib/tui/dialogs.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAItC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAKvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAElD,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAClB,OAQA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,MAAM,EAAE,MAAM,IAAI,CAAA;CACrB,OAgEA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,OAwD1F;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CACvC,OA4CA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../lib/tui/format.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAajD;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAI7E;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGxD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @jsxImportSource @opentui/solid */
|
|
2
|
+
import type { PluginConfig } from "../config";
|
|
3
|
+
import type { TuiApi } from "./types";
|
|
4
|
+
export declare function showDialog(api: TuiApi, render: () => any): void;
|
|
5
|
+
export declare function showStatusDialog(api: TuiApi, title: string, eyebrow: string, message: string): void;
|
|
6
|
+
export declare function showError(api: TuiApi, title: string, error: unknown): void;
|
|
7
|
+
export declare function openContextModal(api: TuiApi, config: PluginConfig): void;
|
|
8
|
+
export declare function openStatsModal(api: TuiApi, config: PluginConfig): void;
|
|
9
|
+
export declare function openPanelModal(api: TuiApi, config: PluginConfig): void;
|
|
10
|
+
//# sourceMappingURL=modals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modals.d.ts","sourceRoot":"","sources":["../../../lib/tui/modals.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAGtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAI7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAErC,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAGxD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAI5F;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,QAGnE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,QAgBjE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,QAY/D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,QAkB/D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TuiPluginModule } from "@opencode-ai/plugin/tui";
|
|
2
|
+
import type { buildStatsReport } from "../commands/stats";
|
|
3
|
+
export type TuiApi = Parameters<NonNullable<TuiPluginModule["tui"]>>[0];
|
|
4
|
+
export type Theme = TuiApi["theme"]["current"];
|
|
5
|
+
export type ThemeColor = Exclude<keyof Theme, "thinkingOpacity" | "_hasSelectedListItemText">;
|
|
6
|
+
export type StatsReport = Awaited<ReturnType<typeof buildStatsReport>>;
|
|
7
|
+
export type DcpCommand = {
|
|
8
|
+
title: string;
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
slashName: string;
|
|
12
|
+
slashAliases?: string[];
|
|
13
|
+
run: () => void | Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/tui/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACvE,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAA;AAC9C,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,KAAK,EAAE,iBAAiB,GAAG,0BAA0B,CAAC,CAAA;AAC7F,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAA;AAEtE,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,GAAG,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClC,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** @jsxImportSource @opentui/solid */
|
|
2
|
+
import type { JSX } from "solid-js";
|
|
3
|
+
import type { Theme, ThemeColor, TuiApi } from "./types";
|
|
4
|
+
export declare function DcpFrame(props: {
|
|
5
|
+
api: TuiApi;
|
|
6
|
+
title?: string;
|
|
7
|
+
eyebrow: string;
|
|
8
|
+
children: JSX.Element;
|
|
9
|
+
onBack?: () => void;
|
|
10
|
+
}): any;
|
|
11
|
+
export declare function Card(props: {
|
|
12
|
+
theme: Theme;
|
|
13
|
+
title: string;
|
|
14
|
+
children: JSX.Element;
|
|
15
|
+
}): any;
|
|
16
|
+
export declare function Metric(props: {
|
|
17
|
+
theme: Theme;
|
|
18
|
+
label: string;
|
|
19
|
+
value: string;
|
|
20
|
+
hint?: string;
|
|
21
|
+
}): any;
|
|
22
|
+
export declare function Progress(props: {
|
|
23
|
+
theme: Theme;
|
|
24
|
+
label: string;
|
|
25
|
+
value: number;
|
|
26
|
+
total: number;
|
|
27
|
+
color: ThemeColor;
|
|
28
|
+
detail: string;
|
|
29
|
+
}): any;
|
|
30
|
+
export declare function PromptRow(props: {
|
|
31
|
+
theme: Theme;
|
|
32
|
+
command: string;
|
|
33
|
+
description: string;
|
|
34
|
+
accent?: ThemeColor;
|
|
35
|
+
}): any;
|
|
36
|
+
export declare function StatusPill(props: {
|
|
37
|
+
theme: Theme;
|
|
38
|
+
label: string;
|
|
39
|
+
value: string;
|
|
40
|
+
accent: ThemeColor;
|
|
41
|
+
}): any;
|
|
42
|
+
export declare function ActionRow(props: {
|
|
43
|
+
theme: Theme;
|
|
44
|
+
title: string;
|
|
45
|
+
detail: string;
|
|
46
|
+
onClick: () => void;
|
|
47
|
+
}): any;
|
|
48
|
+
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../lib/tui/ui.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAGtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAEnC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAExD,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB,OAyCA;AAuBD,wBAAgB,IAAI,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,OAoBjF;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,OAc1F;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC5B,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACjB,OAwBA;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAC7B,KAAK,EAAE,KAAK,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;CACtB,OAcA;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAC9B,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,UAAU,CAAA;CACrB,OAcA;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAC7B,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,IAAI,CAAA;CACtB,OAuBA"}
|
package/dist/tui.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../tui.tsx"],"names":[],"mappings":"AAAA,sCAAsC;;;;;AAsBtC,wBAG2B"}
|
package/lib/auth.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function isSecureMode(): boolean {
|
|
2
|
+
return !!process.env.OPENCODE_SERVER_PASSWORD
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function getAuthorizationHeader(): string | undefined {
|
|
6
|
+
const password = process.env.OPENCODE_SERVER_PASSWORD
|
|
7
|
+
if (!password) return undefined
|
|
8
|
+
|
|
9
|
+
const username = process.env.OPENCODE_SERVER_USERNAME ?? "opencode"
|
|
10
|
+
// Use Buffer for Node.js base64 encoding (btoa may not be available in all Node versions)
|
|
11
|
+
const credentials = Buffer.from(`${username}:${password}`).toString("base64")
|
|
12
|
+
return `Basic ${credentials}`
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function configureClientAuth(client: any): any {
|
|
16
|
+
const authHeader = getAuthorizationHeader()
|
|
17
|
+
|
|
18
|
+
if (!authHeader) {
|
|
19
|
+
return client
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// The SDK client has an internal client with request interceptors
|
|
23
|
+
// Access the underlying client to add the interceptor
|
|
24
|
+
const innerClient = client._client || client.client
|
|
25
|
+
|
|
26
|
+
if (innerClient?.interceptors?.request) {
|
|
27
|
+
innerClient.interceptors.request.use((request: Request) => {
|
|
28
|
+
// Only add auth header if not already present
|
|
29
|
+
if (!request.headers.has("Authorization")) {
|
|
30
|
+
request.headers.set("Authorization", authHeader)
|
|
31
|
+
}
|
|
32
|
+
return request
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return client
|
|
37
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { CompressionBlock, PruneMessagesState } from "../state"
|
|
2
|
+
|
|
3
|
+
export interface CompressionTarget {
|
|
4
|
+
displayId: number
|
|
5
|
+
runId: number
|
|
6
|
+
topic: string
|
|
7
|
+
compressedTokens: number
|
|
8
|
+
durationMs: number
|
|
9
|
+
grouped: boolean
|
|
10
|
+
blocks: CompressionBlock[]
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function byBlockId(a: CompressionBlock, b: CompressionBlock): number {
|
|
14
|
+
return a.blockId - b.blockId
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function buildTarget(blocks: CompressionBlock[]): CompressionTarget {
|
|
18
|
+
const ordered = [...blocks].sort(byBlockId)
|
|
19
|
+
const first = ordered[0]
|
|
20
|
+
if (!first) {
|
|
21
|
+
throw new Error("Cannot build compression target from empty block list.")
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const grouped = first.mode === "message"
|
|
25
|
+
return {
|
|
26
|
+
displayId: first.blockId,
|
|
27
|
+
runId: first.runId,
|
|
28
|
+
topic: grouped ? first.batchTopic || first.topic : first.topic,
|
|
29
|
+
compressedTokens: ordered.reduce((total, block) => total + block.compressedTokens, 0),
|
|
30
|
+
durationMs: ordered.reduce((total, block) => Math.max(total, block.durationMs), 0),
|
|
31
|
+
grouped,
|
|
32
|
+
blocks: ordered,
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function groupMessageBlocks(blocks: CompressionBlock[]): CompressionTarget[] {
|
|
37
|
+
const grouped = new Map<number, CompressionBlock[]>()
|
|
38
|
+
|
|
39
|
+
for (const block of blocks) {
|
|
40
|
+
const existing = grouped.get(block.runId)
|
|
41
|
+
if (existing) {
|
|
42
|
+
existing.push(block)
|
|
43
|
+
continue
|
|
44
|
+
}
|
|
45
|
+
grouped.set(block.runId, [block])
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return Array.from(grouped.values()).map(buildTarget)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function splitTargets(blocks: CompressionBlock[]): CompressionTarget[] {
|
|
52
|
+
const messageBlocks: CompressionBlock[] = []
|
|
53
|
+
const singleBlocks: CompressionBlock[] = []
|
|
54
|
+
|
|
55
|
+
for (const block of blocks) {
|
|
56
|
+
if (block.mode === "message") {
|
|
57
|
+
messageBlocks.push(block)
|
|
58
|
+
} else {
|
|
59
|
+
singleBlocks.push(block)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const targets = [
|
|
64
|
+
...singleBlocks.map((block) => buildTarget([block])),
|
|
65
|
+
...groupMessageBlocks(messageBlocks),
|
|
66
|
+
]
|
|
67
|
+
return targets.sort((a, b) => a.displayId - b.displayId)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function getActiveCompressionTargets(
|
|
71
|
+
messagesState: PruneMessagesState,
|
|
72
|
+
): CompressionTarget[] {
|
|
73
|
+
const activeBlocks = Array.from(messagesState.activeBlockIds)
|
|
74
|
+
.map((blockId) => messagesState.blocksById.get(blockId))
|
|
75
|
+
.filter((block): block is CompressionBlock => !!block && block.active)
|
|
76
|
+
|
|
77
|
+
return splitTargets(activeBlocks)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function getRecompressibleCompressionTargets(
|
|
81
|
+
messagesState: PruneMessagesState,
|
|
82
|
+
availableMessageIds: Set<string>,
|
|
83
|
+
): CompressionTarget[] {
|
|
84
|
+
const allBlocks = Array.from(messagesState.blocksById.values()).filter((block) => {
|
|
85
|
+
return availableMessageIds.has(block.compressMessageId)
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
const messageGroups = new Map<number, CompressionBlock[]>()
|
|
89
|
+
const singleTargets: CompressionTarget[] = []
|
|
90
|
+
|
|
91
|
+
for (const block of allBlocks) {
|
|
92
|
+
if (block.mode === "message") {
|
|
93
|
+
const existing = messageGroups.get(block.runId)
|
|
94
|
+
if (existing) {
|
|
95
|
+
existing.push(block)
|
|
96
|
+
} else {
|
|
97
|
+
messageGroups.set(block.runId, [block])
|
|
98
|
+
}
|
|
99
|
+
continue
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (block.deactivatedByUser && !block.active) {
|
|
103
|
+
singleTargets.push(buildTarget([block]))
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
for (const blocks of messageGroups.values()) {
|
|
108
|
+
if (blocks.some((block) => block.deactivatedByUser && !block.active)) {
|
|
109
|
+
singleTargets.push(buildTarget(blocks))
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return singleTargets.sort((a, b) => a.displayId - b.displayId)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function resolveCompressionTarget(
|
|
117
|
+
messagesState: PruneMessagesState,
|
|
118
|
+
blockId: number,
|
|
119
|
+
): CompressionTarget | null {
|
|
120
|
+
const block = messagesState.blocksById.get(blockId)
|
|
121
|
+
if (!block) {
|
|
122
|
+
return null
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (block.mode !== "message") {
|
|
126
|
+
return buildTarget([block])
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const blocks = Array.from(messagesState.blocksById.values()).filter(
|
|
130
|
+
(candidate) => candidate.mode === "message" && candidate.runId === block.runId,
|
|
131
|
+
)
|
|
132
|
+
if (blocks.length === 0) {
|
|
133
|
+
return null
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return buildTarget(blocks)
|
|
137
|
+
}
|