@sbugallo/opencode-vpet 0.1.1 → 0.2.0

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 (44) hide show
  1. package/README.md +4 -5
  2. package/dist/adapters/opencode/server-plugin.d.ts +78 -0
  3. package/dist/adapters/opencode/server-plugin.d.ts.map +1 -0
  4. package/dist/adapters/opencode/session-messages.d.ts +4 -9
  5. package/dist/adapters/opencode/session-messages.d.ts.map +1 -1
  6. package/dist/adapters/opencode/usage-event-mapper.d.ts +6 -3
  7. package/dist/adapters/opencode/usage-event-mapper.d.ts.map +1 -1
  8. package/dist/adapters/opencode/vpet-toast.d.ts +4 -2
  9. package/dist/adapters/opencode/vpet-toast.d.ts.map +1 -1
  10. package/dist/cli/install.d.ts.map +1 -1
  11. package/dist/cli.js +3 -3
  12. package/dist/cli.js.map +4 -4
  13. package/dist/commands/vpet-command-result.d.ts +2 -2
  14. package/dist/commands/vpet-command-result.d.ts.map +1 -1
  15. package/dist/commands/vpet-freeze.d.ts +1 -5
  16. package/dist/commands/vpet-freeze.d.ts.map +1 -1
  17. package/dist/commands/vpet-set.d.ts +0 -2
  18. package/dist/commands/vpet-set.d.ts.map +1 -1
  19. package/dist/commands/vpet-spawn.d.ts +0 -2
  20. package/dist/commands/vpet-spawn.d.ts.map +1 -1
  21. package/dist/commands/vpet-unfreeze.d.ts +1 -5
  22. package/dist/commands/vpet-unfreeze.d.ts.map +1 -1
  23. package/dist/index.d.ts +4 -8
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +535 -470
  26. package/dist/index.js.map +22 -21
  27. package/dist/package.json +10 -0
  28. package/dist/rpc.d.ts +32 -0
  29. package/dist/rpc.d.ts.map +1 -0
  30. package/dist/tui/theme.d.ts +27 -0
  31. package/dist/tui/theme.d.ts.map +1 -0
  32. package/dist/tui/vpet-command-layer.d.ts +32 -5
  33. package/dist/tui/vpet-command-layer.d.ts.map +1 -1
  34. package/dist/tui/vpet-dex-dialog.d.ts +2 -2
  35. package/dist/tui/vpet-dex-dialog.d.ts.map +1 -1
  36. package/dist/tui/vpet-history-dialog.d.ts +2 -2
  37. package/dist/tui/vpet-history-dialog.d.ts.map +1 -1
  38. package/dist/tui.d.ts +22 -12
  39. package/dist/tui.d.ts.map +1 -1
  40. package/dist/tui.js +203 -66
  41. package/dist/tui.js.map +10 -7
  42. package/package.json +9 -12
  43. package/dist/adapters/opencode/create-server-hooks.d.ts +0 -39
  44. package/dist/adapters/opencode/create-server-hooks.d.ts.map +0 -1
package/README.md CHANGED
@@ -35,7 +35,7 @@
35
35
  >
36
36
  </div>
37
37
 
38
- `@sbugallo/opencode-vpet` is an OpenCode v1 plugin that adds a Digimon virtual pet to your OpenCode TUI
38
+ `@sbugallo/opencode-vpet` is an OpenCode v2 plugin that adds a Digimon virtual pet to your OpenCode TUI
39
39
  sidebar. Your Digimon evolves as you use OpenCode, and you can browse your discoveries and
40
40
  partner history.
41
41
 
@@ -62,7 +62,7 @@ options in that Digimon's line.
62
62
  ## Quick start
63
63
 
64
64
  Requirements:
65
- - OpenCode `>=1.18.10`
65
+ - OpenCode `>=2.0.18`
66
66
  - Node `>=20` to run `npx`
67
67
  - Bun `>=1.3.5` only for local development
68
68
 
@@ -73,10 +73,9 @@ Requirements:
73
73
  npx @sbugallo/opencode-vpet init
74
74
  ```
75
75
 
76
- The CLI delegates to `opencode plugin @sbugallo/opencode-vpet@<installed-package-version> --global --force`.
76
+ The CLI delegates to `opencode plugin add @sbugallo/opencode-vpet@<installed-package-version>`.
77
77
  It uses the package's installed exact version so OpenCode uses a version-specific cache key rather
78
- than reusing a stale bare or `@latest` cache entry. `--force` replaces matching plugin
79
- configuration registrations.
78
+ than reusing a stale bare or `@latest` cache entry.
80
79
 
81
80
  2. Restart OpenCode when the command finishes.
82
81
 
@@ -0,0 +1,78 @@
1
+ import type { Plugin } from "@opencode/plugin";
2
+ import type { PartnerLifecycle } from "../../application/ports/partner-lifecycle.ts";
3
+ import type { UsageLedger } from "../../application/ports/usage-ledger.ts";
4
+ import type { VpetControl } from "../../application/ports/vpet-control.ts";
5
+ import type { VpetCommandResult } from "../../commands/vpet-command-result.ts";
6
+ import type { ResolvedVpetSettings, VpetLanguage } from "../../config/types.ts";
7
+ import { type DigimonCatalog } from "../../data/catalog.ts";
8
+ import type { EvolutionSelector, StageThresholds } from "../../domain/evolution.ts";
9
+ import { type SessionMessagesFetcher } from "./session-messages.ts";
10
+ import { type VpetToastNotifier } from "./vpet-toast.ts";
11
+ export type ServerResource = {
12
+ close(): Promise<void>;
13
+ };
14
+ export type ServerRepository = PartnerLifecycle & UsageLedger & VpetControl & ServerResource;
15
+ export type ServerContext = Pick<Plugin.Context, "options" | "command" | "event" | "rpc" | "session">;
16
+ export type ServerEventSource = {
17
+ subscribe(options: {
18
+ readonly signal: AbortSignal;
19
+ }): AsyncIterable<{
20
+ readonly type: string;
21
+ readonly data: unknown;
22
+ }>;
23
+ };
24
+ export type ServerCommandDefinition = {
25
+ readonly name: string;
26
+ readonly description: string;
27
+ readonly execute: (input: {
28
+ readonly prompt: {
29
+ readonly text: string;
30
+ };
31
+ }) => Promise<void>;
32
+ };
33
+ export type ServerRepositoryInput = {
34
+ readonly appDataRoot?: string;
35
+ readonly databasePath?: string;
36
+ };
37
+ export type ServerDependencies = {
38
+ readonly openRepository: (input: ServerRepositoryInput) => Promise<ServerRepository>;
39
+ readonly loadSettings?: () => Promise<ResolvedVpetSettings>;
40
+ readonly loadCatalog?: () => Promise<DigimonCatalog>;
41
+ readonly evolutionSelector?: EvolutionSelector;
42
+ readonly evolutionThresholds?: StageThresholds;
43
+ readonly language?: VpetLanguage;
44
+ readonly notificationsEnabled?: boolean;
45
+ readonly notify?: VpetToastNotifier;
46
+ readonly fetchMessages?: SessionMessagesFetcher;
47
+ };
48
+ export declare const createCommandConfig: () => {
49
+ "vpet-spawn": {
50
+ description: string;
51
+ };
52
+ "vpet-freeze": {
53
+ description: string;
54
+ };
55
+ "vpet-unfreeze": {
56
+ description: string;
57
+ };
58
+ "vpet-set": {
59
+ description: string;
60
+ };
61
+ };
62
+ /** Narrows a v2 event to the sessions whose completed usage should be reconciled. */
63
+ export declare const toReconcileSessionID: (event: unknown) => string | undefined;
64
+ export type ServerReconcile = (messages: readonly unknown[]) => Promise<void>;
65
+ export declare const consumeVpetSessionEvents: (input: {
66
+ readonly event: ServerEventSource;
67
+ readonly signal: AbortSignal;
68
+ readonly fetchMessages: SessionMessagesFetcher;
69
+ readonly reconcile: ServerReconcile;
70
+ }) => Promise<void>;
71
+ export type VpetCommandDefinitionDependencies = {
72
+ readonly repository: ServerRepository;
73
+ readonly emit: (result: VpetCommandResult, catalog?: DigimonCatalog) => Promise<void>;
74
+ readonly loadCatalog: () => Promise<DigimonCatalog>;
75
+ };
76
+ export declare const createVpetCommandDefinitions: ({ repository, emit, loadCatalog, }: VpetCommandDefinitionDependencies) => readonly ServerCommandDefinition[];
77
+ export declare const setupVpetServer: (context: ServerContext, dependencies: ServerDependencies) => Promise<Plugin.Cleanup>;
78
+ //# sourceMappingURL=server-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-plugin.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode/server-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,9 @@
1
- import type { Message, SessionMessagesResponse } from "@opencode-ai/sdk";
2
- export type SessionMessagesFetcher = (sessionID: string) => Promise<readonly Message[]>;
1
+ export type SessionMessagesFetcher = (sessionID: string) => Promise<readonly unknown[]>;
3
2
  export type SessionMessagesClient = {
4
3
  readonly session: {
5
- messages: (options: {
6
- readonly path: {
7
- readonly id: string;
8
- };
9
- }) => Promise<{
10
- readonly data: SessionMessagesResponse | undefined;
11
- }>;
4
+ context: (input: {
5
+ readonly sessionID: string;
6
+ }) => Promise<readonly unknown[]>;
12
7
  };
13
8
  };
14
9
  export declare const createSessionMessagesFetcher: (client: SessionMessagesClient) => SessionMessagesFetcher;
@@ -1 +1 @@
1
- {"version":3,"file":"session-messages.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode/session-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAExE,MAAM,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAA;AAEvF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,EAAE,CAAC,OAAO,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE;gBAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,KAAK,OAAO,CAAC;YACzE,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,SAAS,CAAA;SACnD,CAAC,CAAA;KACH,CAAA;CACF,CAAA;AAED,eAAO,MAAM,4BAA4B,GAAI,QAAQ,qBAAqB,KAAG,sBAM5E,CAAA"}
1
+ {"version":3,"file":"session-messages.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode/session-messages.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAA;AAEvF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,OAAO,EAAE;QAChB,OAAO,EAAE,CAAC,KAAK,EAAE;YAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAA;KAChF,CAAA;CACF,CAAA;AAED,eAAO,MAAM,4BAA4B,GAAI,QAAQ,qBAAqB,KAAG,sBAE5E,CAAA"}
@@ -1,5 +1,8 @@
1
- import type { Event, Message } from "@opencode-ai/sdk";
2
1
  import type { CompletedUsage } from "../../application/use-cases/record-usage.ts";
3
- export declare const toCompletedUsageFromMessage: (message: Message) => CompletedUsage | null;
4
- export declare const toCompletedUsageFromEvent: (event: Event) => CompletedUsage | null;
2
+ /**
3
+ * Maps a completed assistant message from the v2 `session.context()` shape into
4
+ * a usage receipt. Messages without a completed timestamp or full token usage
5
+ * (for example title or compaction messages) are not recordable.
6
+ */
7
+ export declare const toCompletedUsageFromMessage: (message: unknown) => CompletedUsage | null;
5
8
  //# sourceMappingURL=usage-event-mapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage-event-mapper.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode/usage-event-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAA;AAMjF,eAAO,MAAM,2BAA2B,GAAI,SAAS,OAAO,KAAG,cAAc,GAAG,IAiB/E,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,OAAO,KAAK,KAAG,cAAc,GAAG,IAGzE,CAAA"}
1
+ {"version":3,"file":"usage-event-mapper.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode/usage-event-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAA;AAajF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GAAI,SAAS,OAAO,KAAG,cAAc,GAAG,IAsC/E,CAAA"}
@@ -3,7 +3,7 @@ import type { DigimonCatalog } from "../../data/catalog.ts";
3
3
  export type VpetToastPayload = Readonly<{
4
4
  readonly title: string;
5
5
  readonly message: string;
6
- readonly variant: "info" | "success";
6
+ readonly variant: "info" | "success" | "warning";
7
7
  readonly duration: number;
8
8
  }>;
9
9
  export type VpetToastEvent = Readonly<{
@@ -23,7 +23,9 @@ export type VpetToastEvent = Readonly<{
23
23
  readonly toNodeId: string;
24
24
  }>;
25
25
  export type VpetToastNotifier = (payload: VpetToastPayload) => Promise<void>;
26
- export type VpetToastTransport = (payload: VpetToastPayload) => boolean | Promise<boolean>;
26
+ export type VpetToastTransport = (payload: VpetToastPayload) => unknown | Promise<unknown>;
27
+ /** Narrows untyped RPC event data into a toast payload. */
28
+ export declare const toVpetToastPayload: (data: unknown) => VpetToastPayload | undefined;
27
29
  export declare const formatVpetToast: (event: VpetToastEvent, language: VpetLanguage, catalog: DigimonCatalog) => VpetToastPayload | undefined;
28
30
  export declare const createBestEffortVpetToastNotifier: (transport: VpetToastTransport) => VpetToastNotifier;
29
31
  //# sourceMappingURL=vpet-toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vpet-toast.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode/vpet-toast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,uBAAuB,CAAA;AAExE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAC,CAAA;AAEF,MAAM,MAAM,cAAc,GACtB,QAAQ,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1F,QAAQ,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,GACrC,QAAQ,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GACvC,QAAQ,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3D,QAAQ,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEpG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE5E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAsB1F,eAAO,MAAM,eAAe,GAC1B,OAAO,cAAc,EACrB,UAAU,YAAY,EACtB,SAAS,cAAc,KACtB,gBAAgB,GAAG,SA2CrB,CAAA;AAED,eAAO,MAAM,iCAAiC,GAAI,WAAW,kBAAkB,KAAG,iBAQjF,CAAA"}
1
+ {"version":3,"file":"vpet-toast.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode/vpet-toast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,uBAAuB,CAAA;AAExE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAC,CAAA;AAEF,MAAM,MAAM,cAAc,GACtB,QAAQ,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1F,QAAQ,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,GACrC,QAAQ,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GACvC,QAAQ,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3D,QAAQ,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEpG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE5E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE1F,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,GAAI,MAAM,OAAO,KAAG,gBAAgB,GAAG,SAYrE,CAAA;AAsBD,eAAO,MAAM,eAAe,GAC1B,OAAO,cAAc,EACrB,UAAU,YAAY,EACtB,SAAS,cAAc,KACtB,gBAAgB,GAAG,SA2CrB,CAAA;AAED,eAAO,MAAM,iCAAiC,GAAI,WAAW,kBAAkB,KAAG,iBAQjF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"AAEA,qBAAa,0BAA2B,SAAQ,KAAK;IAGvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAF5C,QAAQ,CAAC,IAAI,gCAA+B;gBAEvB,QAAQ,EAAE,MAAM,GAAG,IAAI;CAO7C;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE/F,eAAO,MAAM,UAAU,EAAE,eAQrB,CAAA;AAEJ,eAAO,MAAM,mBAAmB,GAAU,aAAa,MAAM,EAAE,UAAS,eAA4B,KAAG,OAAO,CAAC,IAAI,CAC9C,CAAA"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"AAEA,qBAAa,0BAA2B,SAAQ,KAAK;IAGvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAF5C,QAAQ,CAAC,IAAI,gCAA+B;gBAEvB,QAAQ,EAAE,MAAM,GAAG,IAAI;CAO7C;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE/F,eAAO,MAAM,UAAU,EAAE,eAQrB,CAAA;AAEJ,eAAO,MAAM,mBAAmB,GAAU,aAAa,MAAM,EAAE,UAAS,eAA4B,KAAG,OAAO,CAAC,IAAI,CAC9D,CAAA"}
package/dist/cli.js CHANGED
@@ -24,7 +24,7 @@ var runCommand = (command, arguments_) => new Promise((resolve, reject) => {
24
24
  reject(new OpenCodePluginInstallError(exitCode));
25
25
  });
26
26
  });
27
- var installGlobalPlugin = async (packageSpec, execute = runCommand) => execute("opencode", ["plugin", packageSpec, "--global", "--force"]);
27
+ var installGlobalPlugin = async (packageSpec, execute = runCommand) => execute("opencode", ["plugin", "add", packageSpec]);
28
28
 
29
29
  // src/cli.ts
30
30
  var HELP = `Usage: opencode-vpet <init|update> [--dry-run]
@@ -80,7 +80,7 @@ ${HELP}`);
80
80
  const manifest = await readPackageManifest();
81
81
  const packageSpec = `${manifest.name}@${manifest.version}`;
82
82
  if (parsed.dryRun) {
83
- process.stdout.write(`opencode plugin ${packageSpec} --global --force
83
+ process.stdout.write(`opencode plugin add ${packageSpec}
84
84
  `);
85
85
  return 0;
86
86
  }
@@ -100,5 +100,5 @@ run().then((exitCode) => {
100
100
  process.exitCode = 1;
101
101
  });
102
102
 
103
- //# debugId=7645693B9B10670E64756E2164756E21
103
+ //# debugId=2B68ABCF198098E364756E2164756E21
104
104
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/cli.ts", "../src/cli/install.ts"],
4
4
  "sourcesContent": [
5
- "#!/usr/bin/env node\nimport { readFile } from \"node:fs/promises\"\n\nimport { installGlobalPlugin } from \"./cli/install.ts\"\n\nconst HELP = `Usage: opencode-vpet <init|update> [--dry-run]\n\nCommands:\n init Install the current package version through OpenCode's global plugin installer.\n update Reinstall the current package version through the same installer.\n\nOptions:\n --dry-run Show the native OpenCode command without running it.\n --help Show this help text.\n`\n\ntype Command = \"init\" | \"update\"\n\ntype ParsedArguments =\n | Readonly<{ readonly kind: \"help\" }>\n | Readonly<{ readonly kind: \"command\"; readonly command: Command; readonly dryRun: boolean }>\n | Readonly<{ readonly kind: \"invalid\"; readonly message: string }>\n\ntype PackageManifest = Readonly<{ readonly name: \"@sbugallo/opencode-vpet\"; readonly version: string }>\n\nconst EXACT_SEMVER =\n /^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$/\n\nconst isPackageManifest = (value: unknown): value is PackageManifest => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false\n if (!(\"name\" in value) || !(\"version\" in value)) return false\n const { name, version } = value\n return name === \"@sbugallo/opencode-vpet\" && typeof version === \"string\" && EXACT_SEMVER.test(version)\n}\n\nconst readPackageManifest = async (): Promise<PackageManifest> => {\n const source = await readFile(new URL(\"../package.json\", import.meta.url), \"utf8\")\n const manifest: unknown = JSON.parse(source)\n if (!isPackageManifest(manifest)) throw new Error(\"Invalid opencode-vpet package manifest.\")\n return manifest\n}\n\nconst parseArguments = (arguments_: readonly string[]): ParsedArguments => {\n if (arguments_.length === 1 && arguments_[0] === \"--help\") return { kind: \"help\" }\n const [command, ...options] = arguments_\n if (command !== \"init\" && command !== \"update\") return { kind: \"invalid\", message: \"Expected init or update.\" }\n if (options.length === 0) return { kind: \"command\", command, dryRun: false }\n if (options.length === 1 && options[0] === \"--dry-run\") return { kind: \"command\", command, dryRun: true }\n return { kind: \"invalid\", message: \"Only --dry-run is supported after a command.\" }\n}\n\nconst run = async (): Promise<number> => {\n const parsed = parseArguments(process.argv.slice(2))\n switch (parsed.kind) {\n case \"help\":\n process.stdout.write(HELP)\n return 0\n case \"invalid\":\n process.stderr.write(`${parsed.message}\\n\\n${HELP}`)\n return 2\n case \"command\": {\n const manifest = await readPackageManifest()\n const packageSpec = `${manifest.name}@${manifest.version}`\n if (parsed.dryRun) {\n process.stdout.write(`opencode plugin ${packageSpec} --global --force\\n`)\n return 0\n }\n await installGlobalPlugin(packageSpec)\n process.stdout.write(\"OpenCode plugin installation completed. Restart OpenCode.\\n\")\n return 0\n }\n }\n}\n\nrun()\n .then((exitCode) => {\n process.exitCode = exitCode\n })\n .catch((error: unknown) => {\n const message = error instanceof Error ? error.message : \"Unexpected CLI failure.\"\n process.stderr.write(`${message}\\n`)\n process.exitCode = 1\n })\n",
6
- "import { spawn } from \"node:child_process\"\n\nexport class OpenCodePluginInstallError extends Error {\n readonly name = \"OpenCodePluginInstallError\"\n\n constructor(readonly exitCode: number | null) {\n super(\n exitCode === null\n ? \"OpenCode plugin installer exited without a status.\"\n : `OpenCode plugin installer exited with status ${exitCode}.`,\n )\n }\n}\n\nexport type CommandExecutor = (command: string, arguments_: readonly string[]) => Promise<void>\n\nexport const runCommand: CommandExecutor = (command, arguments_) =>\n new Promise((resolve, reject) => {\n const child = spawn(command, arguments_, { shell: false, stdio: \"inherit\" })\n child.once(\"error\", reject)\n child.once(\"close\", (exitCode) => {\n if (exitCode === 0) resolve()\n else reject(new OpenCodePluginInstallError(exitCode))\n })\n })\n\nexport const installGlobalPlugin = async (packageSpec: string, execute: CommandExecutor = runCommand): Promise<void> =>\n execute(\"opencode\", [\"plugin\", packageSpec, \"--global\", \"--force\"])\n"
5
+ "#!/usr/bin/env node\nimport { readFile } from \"node:fs/promises\"\n\nimport { installGlobalPlugin } from \"./cli/install.ts\"\n\nconst HELP = `Usage: opencode-vpet <init|update> [--dry-run]\n\nCommands:\n init Install the current package version through OpenCode's global plugin installer.\n update Reinstall the current package version through the same installer.\n\nOptions:\n --dry-run Show the native OpenCode command without running it.\n --help Show this help text.\n`\n\ntype Command = \"init\" | \"update\"\n\ntype ParsedArguments =\n | Readonly<{ readonly kind: \"help\" }>\n | Readonly<{ readonly kind: \"command\"; readonly command: Command; readonly dryRun: boolean }>\n | Readonly<{ readonly kind: \"invalid\"; readonly message: string }>\n\ntype PackageManifest = Readonly<{ readonly name: \"@sbugallo/opencode-vpet\"; readonly version: string }>\n\nconst EXACT_SEMVER =\n /^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$/\n\nconst isPackageManifest = (value: unknown): value is PackageManifest => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false\n if (!(\"name\" in value) || !(\"version\" in value)) return false\n const { name, version } = value\n return name === \"@sbugallo/opencode-vpet\" && typeof version === \"string\" && EXACT_SEMVER.test(version)\n}\n\nconst readPackageManifest = async (): Promise<PackageManifest> => {\n const source = await readFile(new URL(\"../package.json\", import.meta.url), \"utf8\")\n const manifest: unknown = JSON.parse(source)\n if (!isPackageManifest(manifest)) throw new Error(\"Invalid opencode-vpet package manifest.\")\n return manifest\n}\n\nconst parseArguments = (arguments_: readonly string[]): ParsedArguments => {\n if (arguments_.length === 1 && arguments_[0] === \"--help\") return { kind: \"help\" }\n const [command, ...options] = arguments_\n if (command !== \"init\" && command !== \"update\") return { kind: \"invalid\", message: \"Expected init or update.\" }\n if (options.length === 0) return { kind: \"command\", command, dryRun: false }\n if (options.length === 1 && options[0] === \"--dry-run\") return { kind: \"command\", command, dryRun: true }\n return { kind: \"invalid\", message: \"Only --dry-run is supported after a command.\" }\n}\n\nconst run = async (): Promise<number> => {\n const parsed = parseArguments(process.argv.slice(2))\n switch (parsed.kind) {\n case \"help\":\n process.stdout.write(HELP)\n return 0\n case \"invalid\":\n process.stderr.write(`${parsed.message}\\n\\n${HELP}`)\n return 2\n case \"command\": {\n const manifest = await readPackageManifest()\n const packageSpec = `${manifest.name}@${manifest.version}`\n if (parsed.dryRun) {\n process.stdout.write(`opencode plugin add ${packageSpec}\\n`)\n return 0\n }\n await installGlobalPlugin(packageSpec)\n process.stdout.write(\"OpenCode plugin installation completed. Restart OpenCode.\\n\")\n return 0\n }\n }\n}\n\nrun()\n .then((exitCode) => {\n process.exitCode = exitCode\n })\n .catch((error: unknown) => {\n const message = error instanceof Error ? error.message : \"Unexpected CLI failure.\"\n process.stderr.write(`${message}\\n`)\n process.exitCode = 1\n })\n",
6
+ "import { spawn } from \"node:child_process\"\n\nexport class OpenCodePluginInstallError extends Error {\n readonly name = \"OpenCodePluginInstallError\"\n\n constructor(readonly exitCode: number | null) {\n super(\n exitCode === null\n ? \"OpenCode plugin installer exited without a status.\"\n : `OpenCode plugin installer exited with status ${exitCode}.`,\n )\n }\n}\n\nexport type CommandExecutor = (command: string, arguments_: readonly string[]) => Promise<void>\n\nexport const runCommand: CommandExecutor = (command, arguments_) =>\n new Promise((resolve, reject) => {\n const child = spawn(command, arguments_, { shell: false, stdio: \"inherit\" })\n child.once(\"error\", reject)\n child.once(\"close\", (exitCode) => {\n if (exitCode === 0) resolve()\n else reject(new OpenCodePluginInstallError(exitCode))\n })\n })\n\nexport const installGlobalPlugin = async (packageSpec: string, execute: CommandExecutor = runCommand): Promise<void> =>\n execute(\"opencode\", [\"plugin\", \"add\", packageSpec])\n"
7
7
  ],
8
- "mappings": ";;;AACA;;;ACDA;AAAA;AAEO,MAAM,mCAAmC,MAAM;AAAA,EAG/B;AAAA,EAFZ,OAAO;AAAA,EAEhB,WAAW,CAAU,UAAyB;AAAA,IAC5C,MACE,aAAa,OACT,uDACA,gDAAgD,WACtD;AAAA,IALmB;AAAA;AAOvB;AAIO,IAAM,aAA8B,CAAC,SAAS,eACnD,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,EAC/B,MAAM,QAAQ,MAAM,SAAS,YAAY,EAAE,OAAO,OAAO,OAAO,UAAU,CAAC;AAAA,EAC3E,MAAM,KAAK,SAAS,MAAM;AAAA,EAC1B,MAAM,KAAK,SAAS,CAAC,aAAa;AAAA,IAChC,IAAI,aAAa;AAAA,MAAG,QAAQ;AAAA,IACvB;AAAA,aAAO,IAAI,2BAA2B,QAAQ,CAAC;AAAA,GACrD;AAAA,CACF;AAEI,IAAM,sBAAsB,OAAO,aAAqB,UAA2B,eACxF,QAAQ,YAAY,CAAC,UAAU,aAAa,YAAY,SAAS,CAAC;;;ADtBpE,IAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBb,IAAM,eACJ;AAEF,IAAM,oBAAoB,CAAC,UAA6C;AAAA,EACtE,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EAChF,IAAI,EAAE,UAAU,UAAU,EAAE,aAAa;AAAA,IAAQ,OAAO;AAAA,EACxD,QAAQ,MAAM,YAAY;AAAA,EAC1B,OAAO,SAAS,6BAA6B,OAAO,YAAY,YAAY,aAAa,KAAK,OAAO;AAAA;AAGvG,IAAM,sBAAsB,YAAsC;AAAA,EAChE,MAAM,SAAS,MAAM,SAAS,IAAI,IAAI,mBAAmB,YAAY,GAAG,GAAG,MAAM;AAAA,EACjF,MAAM,WAAoB,KAAK,MAAM,MAAM;AAAA,EAC3C,IAAI,CAAC,kBAAkB,QAAQ;AAAA,IAAG,MAAM,IAAI,MAAM,yCAAyC;AAAA,EAC3F,OAAO;AAAA;AAGT,IAAM,iBAAiB,CAAC,eAAmD;AAAA,EACzE,IAAI,WAAW,WAAW,KAAK,WAAW,OAAO;AAAA,IAAU,OAAO,EAAE,MAAM,OAAO;AAAA,EACjF,OAAO,YAAY,WAAW;AAAA,EAC9B,IAAI,YAAY,UAAU,YAAY;AAAA,IAAU,OAAO,EAAE,MAAM,WAAW,SAAS,2BAA2B;AAAA,EAC9G,IAAI,QAAQ,WAAW;AAAA,IAAG,OAAO,EAAE,MAAM,WAAW,SAAS,QAAQ,MAAM;AAAA,EAC3E,IAAI,QAAQ,WAAW,KAAK,QAAQ,OAAO;AAAA,IAAa,OAAO,EAAE,MAAM,WAAW,SAAS,QAAQ,KAAK;AAAA,EACxG,OAAO,EAAE,MAAM,WAAW,SAAS,+CAA+C;AAAA;AAGpF,IAAM,MAAM,YAA6B;AAAA,EACvC,MAAM,SAAS,eAAe,QAAQ,KAAK,MAAM,CAAC,CAAC;AAAA,EACnD,QAAQ,OAAO;AAAA,SACR;AAAA,MACH,QAAQ,OAAO,MAAM,IAAI;AAAA,MACzB,OAAO;AAAA,SACJ;AAAA,MACH,QAAQ,OAAO,MAAM,GAAG,OAAO;AAAA;AAAA,EAAc,MAAM;AAAA,MACnD,OAAO;AAAA,SACJ,WAAW;AAAA,MACd,MAAM,WAAW,MAAM,oBAAoB;AAAA,MAC3C,MAAM,cAAc,GAAG,SAAS,QAAQ,SAAS;AAAA,MACjD,IAAI,OAAO,QAAQ;AAAA,QACjB,QAAQ,OAAO,MAAM,mBAAmB;AAAA,CAAgC;AAAA,QACxE,OAAO;AAAA,MACT;AAAA,MACA,MAAM,oBAAoB,WAAW;AAAA,MACrC,QAAQ,OAAO,MAAM;AAAA,CAA6D;AAAA,MAClF,OAAO;AAAA,IACT;AAAA;AAAA;AAIJ,IAAI,EACD,KAAK,CAAC,aAAa;AAAA,EAClB,QAAQ,WAAW;AAAA,CACpB,EACA,MAAM,CAAC,UAAmB;AAAA,EACzB,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AAAA,EACzD,QAAQ,OAAO,MAAM,GAAG;AAAA,CAAW;AAAA,EACnC,QAAQ,WAAW;AAAA,CACpB;",
9
- "debugId": "7645693B9B10670E64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "2B68ABCF198098E364756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,4 +1,3 @@
1
- import type { Part } from "@opencode-ai/sdk";
2
1
  export type VpetCommandEvent = {
3
2
  readonly kind: "spawned";
4
3
  readonly nodeId: string;
@@ -12,7 +11,8 @@ export type VpetCommandEvent = {
12
11
  readonly nodeId: string;
13
12
  };
14
13
  export type VpetCommandResult = {
15
- readonly parts: readonly Part[];
14
+ readonly message: string;
15
+ readonly variant: "info" | "warning";
16
16
  readonly event?: VpetCommandEvent;
17
17
  };
18
18
  //# sourceMappingURL=vpet-command-result.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vpet-command-result.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-command-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE5C,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAClC,CAAA"}
1
+ {"version":3,"file":"vpet-command-result.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-command-result.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAClC,CAAA"}
@@ -1,8 +1,4 @@
1
1
  import type { VpetControl } from "../application/ports/vpet-control.ts";
2
2
  import type { VpetCommandResult } from "./vpet-command-result.ts";
3
- export type VpetFreezeContext = {
4
- readonly sessionID: string;
5
- readonly messageID: string;
6
- };
7
- export declare const runVpetFreezeCommand: (control: Pick<VpetControl, "freeze">, context: VpetFreezeContext) => Promise<VpetCommandResult>;
3
+ export declare const runVpetFreezeCommand: (control: Pick<VpetControl, "freeze">) => Promise<VpetCommandResult>;
8
4
  //# sourceMappingURL=vpet-freeze.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vpet-freeze.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-freeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,SAAS,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EACpC,SAAS,iBAAiB,KACzB,OAAO,CAAC,iBAAiB,CAsB3B,CAAA"}
1
+ {"version":3,"file":"vpet-freeze.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-freeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,eAAO,MAAM,oBAAoB,GAAU,SAAS,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAG,OAAO,CAAC,iBAAiB,CAa1G,CAAA"}
@@ -2,8 +2,6 @@ import type { VpetControl } from "../application/ports/vpet-control.ts";
2
2
  import type { DigimonCatalog } from "../data/catalog.ts";
3
3
  import type { VpetCommandResult } from "./vpet-command-result.ts";
4
4
  export type VpetSetContext = {
5
- readonly sessionID: string;
6
- readonly messageID: string;
7
5
  readonly arguments: string;
8
6
  };
9
7
  export type DigimonCatalogLoader = () => Promise<DigimonCatalog>;
@@ -1 +1 @@
1
- {"version":3,"file":"vpet-set.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-set.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,CAAA;AAUhE,eAAO,MAAM,iBAAiB,GAC5B,SAAS,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAC1C,SAAS,cAAc,EACvB,aAAa,oBAAoB,KAChC,OAAO,CAAC,iBAAiB,CAwB3B,CAAA"}
1
+ {"version":3,"file":"vpet-set.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,CAAA;AAEhE,eAAO,MAAM,iBAAiB,GAC5B,SAAS,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAC1C,SAAS,cAAc,EACvB,aAAa,oBAAoB,KAChC,OAAO,CAAC,iBAAiB,CAwB3B,CAAA"}
@@ -1,8 +1,6 @@
1
1
  import type { PartnerLifecycle } from "../application/ports/partner-lifecycle.ts";
2
2
  import type { VpetCommandResult } from "./vpet-command-result.ts";
3
3
  export type VpetSpawnContext = {
4
- readonly sessionID: string;
5
- readonly messageID: string;
6
4
  readonly createdAt: string;
7
5
  };
8
6
  export declare const runVpetSpawnCommand: (lifecycle: PartnerLifecycle, context: VpetSpawnContext) => Promise<VpetCommandResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"vpet-spawn.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-spawn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAEjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,WAAW,gBAAgB,EAC3B,SAAS,gBAAgB,KACxB,OAAO,CAAC,iBAAiB,CAe3B,CAAA"}
1
+ {"version":3,"file":"vpet-spawn.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-spawn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAEjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,WAAW,gBAAgB,EAC3B,SAAS,gBAAgB,KACxB,OAAO,CAAC,iBAAiB,CAQ3B,CAAA"}
@@ -1,8 +1,4 @@
1
1
  import type { VpetControl } from "../application/ports/vpet-control.ts";
2
2
  import type { VpetCommandResult } from "./vpet-command-result.ts";
3
- export type VpetUnfreezeContext = {
4
- readonly sessionID: string;
5
- readonly messageID: string;
6
- };
7
- export declare const runVpetUnfreezeCommand: (control: Pick<VpetControl, "unfreeze">, context: VpetUnfreezeContext) => Promise<VpetCommandResult>;
3
+ export declare const runVpetUnfreezeCommand: (control: Pick<VpetControl, "unfreeze">) => Promise<VpetCommandResult>;
8
4
  //# sourceMappingURL=vpet-unfreeze.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vpet-unfreeze.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-unfreeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,SAAS,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EACtC,SAAS,mBAAmB,KAC3B,OAAO,CAAC,iBAAiB,CAsB3B,CAAA"}
1
+ {"version":3,"file":"vpet-unfreeze.d.ts","sourceRoot":"","sources":["../../src/commands/vpet-unfreeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,eAAO,MAAM,sBAAsB,GAAU,SAAS,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,KAAG,OAAO,CAAC,iBAAiB,CAa9G,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,7 @@
1
- import type { Plugin } from "@opencode-ai/plugin";
2
- export { createCommandConfig } from "./adapters/opencode/create-server-hooks.ts";
1
+ import { Plugin } from "@opencode/plugin";
2
+ export { createCommandConfig } from "./adapters/opencode/server-plugin.ts";
3
3
  export { DIGIMON_DATA } from "./data/digimon-data.js";
4
4
  export type { DigimonId, DigimonRecord, DigimonStage } from "./data/digimon-data.js";
5
- export declare const plugin: Plugin;
6
- declare const entryPlugin: {
7
- readonly id: "opencode-vpet";
8
- readonly server: Plugin;
9
- };
10
- export default entryPlugin;
5
+ export declare const plugin: Plugin.Plugin;
6
+ export default plugin;
11
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,qBAAqB,CAAA;AAShE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAmBpF,eAAO,MAAM,MAAM,EAAE,MAmBpB,CAAA;AAED,QAAA,MAAM,WAAW;;;CAGP,CAAA;AAEV,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAKzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAEpF,eAAO,MAAM,MAAM,eAGjB,CAAA;AAEF,eAAe,MAAM,CAAA"}