@bluelovers/opencode-arise 0.1.8 → 0.1.9

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.
Files changed (49) hide show
  1. package/dist/cli/index.js +35132 -170
  2. package/dist/index.js +35674 -150
  3. package/package.json +57 -31
  4. package/dist/agents/index.d.ts +0 -1
  5. package/dist/agents/index.js +0 -2
  6. package/dist/agents/index.js.map +0 -1
  7. package/dist/agents/shadows.d.ts +0 -28
  8. package/dist/agents/shadows.js +0 -182
  9. package/dist/agents/shadows.js.map +0 -1
  10. package/dist/cli/index.d.ts +0 -2
  11. package/dist/cli/index.js.map +0 -1
  12. package/dist/config/paths.d.ts +0 -91
  13. package/dist/config/paths.js +0 -166
  14. package/dist/config/paths.js.map +0 -1
  15. package/dist/config/schema.d.ts +0 -64
  16. package/dist/config/schema.js +0 -55
  17. package/dist/config/schema.js.map +0 -1
  18. package/dist/hooks/arise-banner.d.ts +0 -6
  19. package/dist/hooks/arise-banner.js +0 -50
  20. package/dist/hooks/arise-banner.js.map +0 -1
  21. package/dist/hooks/compaction-preserver.d.ts +0 -3
  22. package/dist/hooks/compaction-preserver.js +0 -17
  23. package/dist/hooks/compaction-preserver.js.map +0 -1
  24. package/dist/hooks/index.d.ts +0 -4
  25. package/dist/hooks/index.js +0 -5
  26. package/dist/hooks/index.js.map +0 -1
  27. package/dist/hooks/output-shaper.d.ts +0 -4
  28. package/dist/hooks/output-shaper.js +0 -52
  29. package/dist/hooks/output-shaper.js.map +0 -1
  30. package/dist/hooks/todo-enforcer.d.ts +0 -9
  31. package/dist/hooks/todo-enforcer.js +0 -43
  32. package/dist/hooks/todo-enforcer.js.map +0 -1
  33. package/dist/index.d.ts +0 -5
  34. package/dist/index.js.map +0 -1
  35. package/dist/tools/background-manager.d.ts +0 -35
  36. package/dist/tools/background-manager.js +0 -163
  37. package/dist/tools/background-manager.js.map +0 -1
  38. package/dist/tools/background-tools.d.ts +0 -6
  39. package/dist/tools/background-tools.js +0 -121
  40. package/dist/tools/background-tools.js.map +0 -1
  41. package/dist/tools/call-arise-agent.d.ts +0 -3
  42. package/dist/tools/call-arise-agent.js +0 -95
  43. package/dist/tools/call-arise-agent.js.map +0 -1
  44. package/dist/tools/index.d.ts +0 -3
  45. package/dist/tools/index.js +0 -4
  46. package/dist/tools/index.js.map +0 -1
  47. package/dist/utils/bun-shim.d.ts +0 -87
  48. package/dist/utils/bun-shim.js +0 -147
  49. package/dist/utils/bun-shim.js.map +0 -1
@@ -1,64 +0,0 @@
1
- import { z } from "zod";
2
- export declare const ShadowName: z.ZodEnum<{
3
- monarch: "monarch";
4
- beru: "beru";
5
- igris: "igris";
6
- bellion: "bellion";
7
- tusk: "tusk";
8
- tank: "tank";
9
- "shadow-sovereign": "shadow-sovereign";
10
- }>;
11
- export type ShadowName = z.infer<typeof ShadowName>;
12
- export declare const HookName: z.ZodEnum<{
13
- "arise-banner": "arise-banner";
14
- "output-shaper": "output-shaper";
15
- "compaction-preserver": "compaction-preserver";
16
- "todo-enforcer": "todo-enforcer";
17
- }>;
18
- export type HookName = z.infer<typeof HookName>;
19
- export declare const AgentOverride: z.ZodObject<{
20
- model: z.ZodOptional<z.ZodString>;
21
- disabled: z.ZodOptional<z.ZodBoolean>;
22
- }, z.core.$strip>;
23
- export declare const AriseConfigSchema: z.ZodObject<{
24
- $schema: z.ZodOptional<z.ZodString>;
25
- disabled_shadows: z.ZodOptional<z.ZodArray<z.ZodEnum<{
26
- monarch: "monarch";
27
- beru: "beru";
28
- igris: "igris";
29
- bellion: "bellion";
30
- tusk: "tusk";
31
- tank: "tank";
32
- "shadow-sovereign": "shadow-sovereign";
33
- }>>>;
34
- disabled_hooks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
35
- "arise-banner": "arise-banner";
36
- "output-shaper": "output-shaper";
37
- "compaction-preserver": "compaction-preserver";
38
- "todo-enforcer": "todo-enforcer";
39
- }>>>;
40
- show_banner: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
41
- banner_every_session: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
42
- agents: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
43
- monarch: "monarch";
44
- beru: "beru";
45
- igris: "igris";
46
- bellion: "bellion";
47
- tusk: "tusk";
48
- tank: "tank";
49
- "shadow-sovereign": "shadow-sovereign";
50
- }>, z.ZodObject<{
51
- model: z.ZodOptional<z.ZodString>;
52
- disabled: z.ZodOptional<z.ZodBoolean>;
53
- }, z.core.$strip>>>;
54
- output_shaping: z.ZodOptional<z.ZodObject<{
55
- max_chars: z.ZodDefault<z.ZodNumber>;
56
- preserve_errors: z.ZodDefault<z.ZodBoolean>;
57
- }, z.core.$strip>>;
58
- compaction: z.ZodOptional<z.ZodObject<{
59
- threshold_percent: z.ZodDefault<z.ZodNumber>;
60
- preserve_todos: z.ZodDefault<z.ZodBoolean>;
61
- }, z.core.$strip>>;
62
- }, z.core.$strip>;
63
- export type AriseConfig = z.infer<typeof AriseConfigSchema>;
64
- export declare const DEFAULT_CONFIG: AriseConfig;
@@ -1,55 +0,0 @@
1
- import { z } from "zod";
2
- export const ShadowName = z.enum([
3
- "monarch",
4
- "beru",
5
- "igris",
6
- "bellion",
7
- "tusk",
8
- "tank",
9
- "shadow-sovereign",
10
- ]);
11
- export const HookName = z.enum([
12
- "arise-banner",
13
- "output-shaper",
14
- "compaction-preserver",
15
- "todo-enforcer",
16
- ]);
17
- export const AgentOverride = z.object({
18
- model: z.string().optional(),
19
- disabled: z.boolean().optional(),
20
- });
21
- export const AriseConfigSchema = z.object({
22
- $schema: z.string().optional(),
23
- disabled_shadows: z.array(ShadowName).optional(),
24
- disabled_hooks: z.array(HookName).optional(),
25
- show_banner: z.boolean().default(true).optional(),
26
- banner_every_session: z.boolean().default(false).optional(),
27
- agents: z.record(ShadowName, AgentOverride).optional(),
28
- output_shaping: z
29
- .object({
30
- max_chars: z.number().default(12000),
31
- preserve_errors: z.boolean().default(true),
32
- })
33
- .optional(),
34
- compaction: z
35
- .object({
36
- threshold_percent: z.number().min(50).max(95).default(80),
37
- preserve_todos: z.boolean().default(true),
38
- })
39
- .optional(),
40
- });
41
- export const DEFAULT_CONFIG = {
42
- show_banner: true,
43
- banner_every_session: false,
44
- disabled_shadows: [],
45
- disabled_hooks: [],
46
- output_shaping: {
47
- max_chars: 12000,
48
- preserve_errors: true,
49
- },
50
- compaction: {
51
- threshold_percent: 80,
52
- preserve_todos: true,
53
- },
54
- };
55
- //# sourceMappingURL=schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC;IAC/B,SAAS;IACT,MAAM;IACN,OAAO;IACP,SAAS;IACT,MAAM;IACN,MAAM;IACN,kBAAkB;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7B,cAAc;IACd,eAAe;IACf,sBAAsB;IACtB,eAAe;CAChB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;IAChD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;IAC5C,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACjD,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE;IACtD,cAAc,EAAE,CAAC;SACd,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACpC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KAC3C,CAAC;SACD,QAAQ,EAAE;IACb,UAAU,EAAE,CAAC;SACV,MAAM,CAAC;QACN,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KAC1C,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,WAAW,EAAE,IAAI;IACjB,oBAAoB,EAAE,KAAK;IAC3B,gBAAgB,EAAE,EAAE;IACpB,cAAc,EAAE,EAAE;IAClB,cAAc,EAAE;QACd,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,IAAI;KACtB;IACD,UAAU,EAAE;QACV,iBAAiB,EAAE,EAAE;QACrB,cAAc,EAAE,IAAI;KACrB;CACF,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
- export declare function createAriseBannerHook(ctx: PluginInput): {
3
- onSessionCreated(): Promise<void>;
4
- };
5
- export declare function getBanner(): string;
6
- export declare function printBannerToConsole(): void;
@@ -1,50 +0,0 @@
1
- const BANNER_ASCII = `
2
- ╔═══════════════════════════════════════════════════════╗
3
- ║ ║
4
- ║ ⚔️ A R I S E ! ⚔️ ║
5
- ║ ║
6
- ║ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║
7
- ║ ░░ Shadow Army Assembled ░░░ ║
8
- ║ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║
9
- ║ ║
10
- ║ Monarch ready. Shadows await your command. ║
11
- ║ ║
12
- ╚═══════════════════════════════════════════════════════╝
13
- `;
14
- const TOAST_MESSAGE = "⚔️ ARISE! Shadow Army Assembled. Monarch ready.";
15
- let bannerShownThisProcess = false;
16
- export function createAriseBannerHook(ctx) {
17
- const showToast = async () => {
18
- try {
19
- await ctx.client.tui.showToast({
20
- body: {
21
- title: "opencode-arise",
22
- message: TOAST_MESSAGE,
23
- variant: "info",
24
- duration: 4000,
25
- },
26
- });
27
- }
28
- catch {
29
- // TUI might not be available (non-interactive mode)
30
- }
31
- };
32
- return {
33
- async onSessionCreated() {
34
- if (!bannerShownThisProcess) {
35
- bannerShownThisProcess = true;
36
- await showToast();
37
- }
38
- },
39
- };
40
- }
41
- export function getBanner() {
42
- return BANNER_ASCII;
43
- }
44
- export function printBannerToConsole() {
45
- if (!bannerShownThisProcess) {
46
- console.log(BANNER_ASCII);
47
- bannerShownThisProcess = true;
48
- }
49
- }
50
- //# sourceMappingURL=arise-banner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arise-banner.js","sourceRoot":"","sources":["../../src/hooks/arise-banner.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAG;;;;;;;;;;;;CAYpB,CAAC;AAEF,MAAM,aAAa,GAAG,iDAAiD,CAAC;AAExE,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAEnC,MAAM,UAAU,qBAAqB,CAAC,GAAgB;IACpD,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC7B,IAAI,EAAE;oBACJ,KAAK,EAAE,gBAAgB;oBACvB,OAAO,EAAE,aAAa;oBACtB,OAAO,EAAE,MAAM;oBACf,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,gBAAgB;YACpB,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC5B,sBAAsB,GAAG,IAAI,CAAC;gBAC9B,MAAM,SAAS,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,sBAAsB,GAAG,IAAI,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function createCompactionPreserverHook(): {
2
- getPreservationContext(): string;
3
- };
@@ -1,17 +0,0 @@
1
- export function createCompactionPreserverHook() {
2
- return {
3
- getPreservationContext() {
4
- return `[opencode-arise] Compaction preservation rules:
5
- - PRESERVE: All TODO items (pending, in_progress, completed)
6
- - PRESERVE: Key decisions and assumptions made
7
- - PRESERVE: File paths that were touched/edited
8
- - PRESERVE: Commands run and their key outputs (especially errors)
9
- - PRESERVE: Shadow delegations and their results
10
- - PRUNE: Verbose tool outputs (grep results, large file contents)
11
- - PRUNE: Repetitive exploration that didn't yield results
12
-
13
- Summarize work done, but keep enough context for the Monarch to continue.`;
14
- },
15
- };
16
- }
17
- //# sourceMappingURL=compaction-preserver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compaction-preserver.js","sourceRoot":"","sources":["../../src/hooks/compaction-preserver.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL,sBAAsB;YACpB,OAAO;;;;;;;;;0EAS6D,CAAC;QACvE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +0,0 @@
1
- export { createAriseBannerHook, getBanner, printBannerToConsole } from "./arise-banner";
2
- export { createOutputShaperHook } from "./output-shaper";
3
- export { createTodoEnforcerHook } from "./todo-enforcer";
4
- export { createCompactionPreserverHook } from "./compaction-preserver";
@@ -1,5 +0,0 @@
1
- export { createAriseBannerHook, getBanner, printBannerToConsole } from "./arise-banner";
2
- export { createOutputShaperHook } from "./output-shaper";
3
- export { createTodoEnforcerHook } from "./todo-enforcer";
4
- export { createCompactionPreserverHook } from "./compaction-preserver";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { AriseConfig } from "../config/schema";
2
- export declare function createOutputShaperHook(config: AriseConfig): {
3
- shapeOutput(toolName: string, output: string, metadata?: Record<string, unknown>): Promise<string>;
4
- };
@@ -1,52 +0,0 @@
1
- const DEFAULT_MAX_CHARS = 12000;
2
- const HEAD_RATIO = 0.7;
3
- const TAIL_RATIO = 0.2;
4
- export function createOutputShaperHook(config) {
5
- const maxChars = config.output_shaping?.max_chars ?? DEFAULT_MAX_CHARS;
6
- const preserveErrors = config.output_shaping?.preserve_errors ?? true;
7
- const headChars = Math.floor(maxChars * HEAD_RATIO);
8
- const tailChars = Math.floor(maxChars * TAIL_RATIO);
9
- return {
10
- async shapeOutput(toolName, output, metadata) {
11
- if (typeof output !== "string")
12
- return output;
13
- if (output.length <= maxChars)
14
- return output;
15
- // Never truncate error outputs
16
- if (preserveErrors) {
17
- const exitCode = metadata?.exitCode ?? metadata?.code ?? metadata?.status;
18
- if (typeof exitCode === "number" && exitCode !== 0) {
19
- return output;
20
- }
21
- // Check for error patterns in output
22
- const errorPatterns = [
23
- /error:/i,
24
- /exception:/i,
25
- /failed:/i,
26
- /traceback/i,
27
- /stack trace/i,
28
- /ENOENT/,
29
- /EACCES/,
30
- /TypeError/,
31
- /ReferenceError/,
32
- /SyntaxError/,
33
- ];
34
- if (errorPatterns.some((p) => p.test(output))) {
35
- // Still truncate but keep more
36
- if (output.length <= maxChars * 2)
37
- return output;
38
- }
39
- }
40
- const head = output.slice(0, headChars);
41
- const tail = output.slice(-tailChars);
42
- const truncatedChars = output.length - headChars - tailChars;
43
- return `${head}
44
-
45
- [opencode-arise] Output truncated (${output.length.toLocaleString()} chars, ${truncatedChars.toLocaleString()} removed).
46
- Use a more specific query or read a targeted file section if needed.
47
-
48
- ${tail}`;
49
- },
50
- };
51
- }
52
- //# sourceMappingURL=output-shaper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output-shaper.js","sourceRoot":"","sources":["../../src/hooks/output-shaper.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,UAAU,sBAAsB,CAAC,MAAmB;IACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,EAAE,SAAS,IAAI,iBAAiB,CAAC;IACvE,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,eAAe,IAAI,IAAI,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC;IAEpD,OAAO;QACL,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,MAAc,EACd,QAAkC;YAElC,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC;YAC9C,IAAI,MAAM,CAAC,MAAM,IAAI,QAAQ;gBAAE,OAAO,MAAM,CAAC;YAE7C,+BAA+B;YAC/B,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,CAAC;gBAC1E,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACnD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,qCAAqC;gBACrC,MAAM,aAAa,GAAG;oBACpB,SAAS;oBACT,aAAa;oBACb,UAAU;oBACV,YAAY;oBACZ,cAAc;oBACd,QAAQ;oBACR,QAAQ;oBACR,WAAW;oBACX,gBAAgB;oBAChB,aAAa;iBACd,CAAC;gBACF,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBAC9C,+BAA+B;oBAC/B,IAAI,MAAM,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC;wBAAE,OAAO,MAAM,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;YAE7D,OAAO,GAAG,IAAI;;qCAEiB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,cAAc,CAAC,cAAc,EAAE;;;EAG3G,IAAI,EAAE,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
- export declare function createTodoEnforcerHook(_ctx: PluginInput): {
3
- checkCompletion(messages: Array<{
4
- content: string;
5
- }>): Promise<{
6
- hasIncompleteTodos: boolean;
7
- reminderMessage?: string;
8
- }>;
9
- };
@@ -1,43 +0,0 @@
1
- const TODO_PATTERNS = [
2
- /\[pending\]/i,
3
- /\[in_progress\]/i,
4
- /- \[ \]/,
5
- /TODO:/i,
6
- /FIXME:/i,
7
- ];
8
- const COMPLETION_PATTERNS = [
9
- /\[completed\]/i,
10
- /\[done\]/i,
11
- /- \[x\]/i,
12
- ];
13
- export function createTodoEnforcerHook(_ctx) {
14
- return {
15
- async checkCompletion(messages) {
16
- const lastAssistantMessages = messages
17
- .filter((m) => m.content)
18
- .slice(-5);
19
- let hasPending = false;
20
- let hasInProgress = false;
21
- for (const msg of lastAssistantMessages) {
22
- const content = msg.content;
23
- if (TODO_PATTERNS.some((p) => p.test(content))) {
24
- if (/\[pending\]/i.test(content) || /- \[ \]/.test(content)) {
25
- hasPending = true;
26
- }
27
- if (/\[in_progress\]/i.test(content)) {
28
- hasInProgress = true;
29
- }
30
- }
31
- }
32
- const hasIncompleteTodos = hasPending || hasInProgress;
33
- if (hasIncompleteTodos) {
34
- return {
35
- hasIncompleteTodos: true,
36
- reminderMessage: `[opencode-arise] Shadow Monarch notice: You have incomplete TODOs. ${hasInProgress ? "Tasks are in_progress." : ""} ${hasPending ? "Tasks are pending." : ""} Complete them before stopping.`,
37
- };
38
- }
39
- return { hasIncompleteTodos: false };
40
- },
41
- };
42
- }
43
- //# sourceMappingURL=todo-enforcer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"todo-enforcer.js","sourceRoot":"","sources":["../../src/hooks/todo-enforcer.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG;IACpB,cAAc;IACd,kBAAkB;IAClB,SAAS;IACT,QAAQ;IACR,SAAS;CACV,CAAC;AAEF,MAAM,mBAAmB,GAAG;IAC1B,gBAAgB;IAChB,WAAW;IACX,UAAU;CACX,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,IAAiB;IACtD,OAAO;QACL,KAAK,CAAC,eAAe,CAAC,QAAoC;YAIxD,MAAM,qBAAqB,GAAG,QAAQ;iBACnC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;iBACxB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAEb,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,aAAa,GAAG,KAAK,CAAC;YAE1B,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC5B,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;oBAC/C,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC5D,UAAU,GAAG,IAAI,CAAC;oBACpB,CAAC;oBACD,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBACrC,aAAa,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,kBAAkB,GAAG,UAAU,IAAI,aAAa,CAAC;YAEvD,IAAI,kBAAkB,EAAE,CAAC;gBACvB,OAAO;oBACL,kBAAkB,EAAE,IAAI;oBACxB,eAAe,EAAE,sEACf,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAC7C,IAAI,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,iCAAiC;iBAC5E,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import type { Plugin } from "@opencode-ai/plugin";
2
- declare const OpencodeArise: Plugin;
3
- export default OpencodeArise;
4
- export type { AriseConfig } from "./config/schema";
5
- export type { ShadowAgent } from "./agents/shadows";
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
- import type { Event } from "@opencode-ai/sdk";
3
- export interface BackgroundTask {
4
- id: string;
5
- sessionId: string;
6
- parentSessionId: string;
7
- shadow: string;
8
- description: string;
9
- status: "running" | "completed" | "error";
10
- startedAt: number;
11
- completedAt?: number;
12
- result?: string;
13
- error?: string;
14
- }
15
- export declare class BackgroundManager {
16
- private tasks;
17
- private ctx;
18
- constructor(ctx: PluginInput);
19
- generateTaskId(): string;
20
- launch(opts: {
21
- shadow: string;
22
- prompt: string;
23
- description: string;
24
- parentSessionId: string;
25
- }): Promise<BackgroundTask>;
26
- private schedulePolling;
27
- private pollTaskCompletion;
28
- private extractResult;
29
- private notifyParent;
30
- getTask(taskId: string): BackgroundTask | undefined;
31
- getAllTasks(): BackgroundTask[];
32
- getTasksForSession(sessionId: string): BackgroundTask[];
33
- cancelTask(taskId: string): Promise<boolean>;
34
- handleEvent(event: Event): void;
35
- }
@@ -1,163 +0,0 @@
1
- export class BackgroundManager {
2
- tasks = new Map();
3
- ctx;
4
- constructor(ctx) {
5
- this.ctx = ctx;
6
- }
7
- generateTaskId() {
8
- return `arise_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 6)}`;
9
- }
10
- async launch(opts) {
11
- const taskId = this.generateTaskId();
12
- // Create a new session for the background task
13
- const session = await this.ctx.client.session.create({
14
- body: { title: `[arise:${taskId}] ${opts.description}` },
15
- });
16
- const sessionId = session.data?.id;
17
- if (!sessionId) {
18
- throw new Error("Failed to create background session");
19
- }
20
- const task = {
21
- id: taskId,
22
- sessionId,
23
- parentSessionId: opts.parentSessionId,
24
- shadow: opts.shadow,
25
- description: opts.description,
26
- status: "running",
27
- startedAt: Date.now(),
28
- };
29
- this.tasks.set(taskId, task);
30
- // Fire the prompt asynchronously
31
- this.ctx.client.session
32
- .promptAsync({
33
- path: { id: sessionId },
34
- body: {
35
- agent: opts.shadow,
36
- parts: [{ type: "text", text: opts.prompt }],
37
- },
38
- })
39
- .then(() => this.schedulePolling(taskId))
40
- .catch((err) => {
41
- task.status = "error";
42
- task.error = err instanceof Error ? err.message : String(err);
43
- task.completedAt = Date.now();
44
- });
45
- return task;
46
- }
47
- schedulePolling(taskId) {
48
- setTimeout(() => this.pollTaskCompletion(taskId), 2000);
49
- }
50
- async pollTaskCompletion(taskId) {
51
- const task = this.tasks.get(taskId);
52
- if (!task || task.status !== "running")
53
- return;
54
- try {
55
- // Check session status
56
- const statusResult = await this.ctx.client.session.status({});
57
- const statuses = statusResult.data;
58
- if (statuses && task.sessionId in statuses) {
59
- const status = statuses[task.sessionId];
60
- if (status.type === "idle") {
61
- await this.extractResult(task);
62
- task.status = "completed";
63
- task.completedAt = Date.now();
64
- await this.notifyParent(task);
65
- }
66
- else if (status.type === "busy" || status.type === "retry") {
67
- this.schedulePolling(taskId);
68
- }
69
- }
70
- else {
71
- // Session not in status map, assume idle
72
- await this.extractResult(task);
73
- task.status = "completed";
74
- task.completedAt = Date.now();
75
- await this.notifyParent(task);
76
- }
77
- }
78
- catch (err) {
79
- task.status = "error";
80
- task.error = err instanceof Error ? err.message : String(err);
81
- task.completedAt = Date.now();
82
- }
83
- }
84
- async extractResult(task) {
85
- try {
86
- const messages = await this.ctx.client.session.messages({
87
- path: { id: task.sessionId },
88
- });
89
- const lastAssistant = messages.data
90
- ?.filter((m) => m.info.role === "assistant")
91
- .pop();
92
- if (lastAssistant) {
93
- const textContent = lastAssistant.parts
94
- ?.filter((p) => p.type === "text")
95
- .map((p) => p.text ?? "")
96
- .join("\n");
97
- task.result = textContent || "(No response)";
98
- }
99
- else {
100
- task.result = "(No assistant response)";
101
- }
102
- }
103
- catch {
104
- task.result = "(Failed to retrieve result)";
105
- }
106
- }
107
- async notifyParent(task) {
108
- const duration = task.completedAt
109
- ? Math.round((task.completedAt - task.startedAt) / 1000)
110
- : 0;
111
- try {
112
- await this.ctx.client.tui.showToast({
113
- body: {
114
- title: "Shadow Complete",
115
- message: `${task.shadow} finished: ${task.description} (${duration}s)`,
116
- variant: "success",
117
- duration: 3000,
118
- },
119
- });
120
- }
121
- catch {
122
- // TUI might not be available
123
- }
124
- }
125
- getTask(taskId) {
126
- return this.tasks.get(taskId);
127
- }
128
- getAllTasks() {
129
- return Array.from(this.tasks.values());
130
- }
131
- getTasksForSession(sessionId) {
132
- return Array.from(this.tasks.values()).filter((t) => t.parentSessionId === sessionId);
133
- }
134
- async cancelTask(taskId) {
135
- const task = this.tasks.get(taskId);
136
- if (!task || task.status !== "running")
137
- return false;
138
- try {
139
- await this.ctx.client.session.abort({ path: { id: task.sessionId } });
140
- }
141
- catch {
142
- // Ignore abort errors
143
- }
144
- task.status = "error";
145
- task.error = "Cancelled";
146
- task.completedAt = Date.now();
147
- return true;
148
- }
149
- handleEvent(event) {
150
- // Handle session.idle events to mark tasks as complete
151
- if (event.type === "session.idle") {
152
- const sessionId = event.properties?.sessionID;
153
- if (sessionId) {
154
- for (const task of this.tasks.values()) {
155
- if (task.sessionId === sessionId && task.status === "running") {
156
- this.pollTaskCompletion(task.id);
157
- }
158
- }
159
- }
160
- }
161
- }
162
- }
163
- //# sourceMappingURL=background-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"background-manager.js","sourceRoot":"","sources":["../../src/tools/background-manager.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { tool } from "@opencode-ai/plugin";
2
- import type { BackgroundManager } from "./background-manager";
3
- export declare function createBackgroundTaskTool(manager: BackgroundManager): ReturnType<typeof tool>;
4
- export declare function createBackgroundOutputTool(manager: BackgroundManager): ReturnType<typeof tool>;
5
- export declare function createBackgroundStatusTool(manager: BackgroundManager): ReturnType<typeof tool>;
6
- export declare function createBackgroundCancelTool(manager: BackgroundManager): ReturnType<typeof tool>;