@rigkit/provider-vscode 0.2.1 → 0.2.3

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.
@@ -30126,6 +30126,7 @@ function runtimeClientSchema(schema2) {
30126
30126
  }
30127
30127
  var RuntimeHandleEffectSchema = exports_Schema.Struct({
30128
30128
  projectId: exports_Schema.String,
30129
+ runtimeFingerprint: exports_Schema.optional(exports_Schema.String),
30129
30130
  projectDir: exports_Schema.String,
30130
30131
  configPath: exports_Schema.String,
30131
30132
  statePath: exports_Schema.optional(exports_Schema.String),
@@ -30145,6 +30146,7 @@ var RuntimeReadyEffectSchema = exports_Schema.Struct({
30145
30146
  var RuntimeHealthEffectSchema = exports_Schema.Struct({
30146
30147
  ok: exports_Schema.Boolean,
30147
30148
  projectId: exports_Schema.String,
30149
+ runtimeFingerprint: exports_Schema.optional(exports_Schema.String),
30148
30150
  projectDir: exports_Schema.optional(exports_Schema.String),
30149
30151
  configPath: exports_Schema.optional(exports_Schema.String),
30150
30152
  statePath: exports_Schema.optional(exports_Schema.String),
@@ -30175,6 +30177,7 @@ var OptionalString = exports_Schema.optional(exports_Schema.String);
30175
30177
  var RuntimeControlHealthEffectSchema = exports_Schema.Struct({
30176
30178
  ok: exports_Schema.Boolean,
30177
30179
  projectId: exports_Schema.String,
30180
+ runtimeFingerprint: OptionalString,
30178
30181
  projectDir: exports_Schema.String,
30179
30182
  configPath: exports_Schema.String,
30180
30183
  statePath: OptionalString,
@@ -30202,14 +30205,6 @@ var RuntimeControlProjectInfoEffectSchema = exports_Schema.Struct({
30202
30205
  workflow: exports_Schema.optional(RuntimeControlWorkflowSummaryEffectSchema),
30203
30206
  workflows: exports_Schema.Array(RuntimeControlWorkflowSummaryEffectSchema)
30204
30207
  }).annotations({ identifier: "ProjectInfo" });
30205
- var RuntimeControlHostMethodRequirementEffectSchema = exports_Schema.Struct({
30206
- id: exports_Schema.String,
30207
- modes: exports_Schema.optional(exports_Schema.Array(exports_Schema.String))
30208
- }).annotations({ identifier: "HostMethodRequirement" });
30209
- var RuntimeControlHostCapabilityRequirementEffectSchema = exports_Schema.Struct({
30210
- id: exports_Schema.String,
30211
- schemaHash: OptionalString
30212
- }).annotations({ identifier: "HostCapabilityRequirement" });
30213
30208
  var RuntimeControlOperationCliEffectSchema = exports_Schema.Struct({
30214
30209
  positionals: exports_Schema.optional(exports_Schema.Array(exports_Schema.Struct({
30215
30210
  name: exports_Schema.String,
@@ -30232,21 +30227,12 @@ var RuntimeControlOperationEffectSchema = exports_Schema.Struct({
30232
30227
  title: exports_Schema.String,
30233
30228
  description: exports_Schema.String,
30234
30229
  createsWorkspace: exports_Schema.optional(exports_Schema.Boolean),
30235
- requiredHostMethods: exports_Schema.optional(exports_Schema.Array(RuntimeControlHostMethodRequirementEffectSchema)),
30236
- requiredHostCapabilities: exports_Schema.optional(exports_Schema.Array(RuntimeControlHostCapabilityRequirementEffectSchema)),
30237
30230
  cli: exports_Schema.optional(RuntimeControlOperationCliEffectSchema),
30238
30231
  inputSchema: UnknownRecord
30239
30232
  }).annotations({ identifier: "RuntimeOperation" });
30240
30233
  var RuntimeControlOperationsManifestEffectSchema = exports_Schema.Struct({
30241
- hostMethods: exports_Schema.Struct({
30242
- known: exports_Schema.Array(RuntimeControlHostMethodRequirementEffectSchema),
30243
- requiredByOperations: exports_Schema.Record({ key: exports_Schema.String, value: exports_Schema.Array(exports_Schema.String) })
30244
- }),
30245
- hostCapabilities: exports_Schema.Struct({
30246
- optional: exports_Schema.Array(RuntimeControlHostCapabilityRequirementEffectSchema),
30247
- requiredByOperations: exports_Schema.Record({ key: exports_Schema.String, value: exports_Schema.Array(exports_Schema.String) })
30248
- }),
30249
- operations: exports_Schema.Array(RuntimeControlOperationEffectSchema)
30234
+ operations: exports_Schema.Array(RuntimeControlOperationEffectSchema),
30235
+ workspaceOperations: exports_Schema.Array(RuntimeControlOperationEffectSchema)
30250
30236
  }).annotations({ identifier: "OperationsManifest" });
30251
30237
  var RuntimeControlWorkflowsResponseEffectSchema = exports_Schema.Struct({
30252
30238
  workflows: exports_Schema.Array(RuntimeControlWorkflowSummaryEffectSchema)
@@ -30254,14 +30240,8 @@ var RuntimeControlWorkflowsResponseEffectSchema = exports_Schema.Struct({
30254
30240
  var RuntimeControlWorkspaceEffectSchema = exports_Schema.Struct({
30255
30241
  id: exports_Schema.String,
30256
30242
  name: exports_Schema.String,
30257
- providerId: exports_Schema.String,
30258
30243
  workflow: exports_Schema.String,
30259
- resourceId: OptionalString,
30260
- snapshotId: OptionalString,
30261
- sourceRef: exports_Schema.Unknown,
30262
- context: UnknownRecord,
30263
- metadata: UnknownRecord,
30264
- data: UnknownRecord,
30244
+ ctx: UnknownRecord,
30265
30245
  createdAt: exports_Schema.String,
30266
30246
  updatedAt: exports_Schema.String
30267
30247
  }).annotations({ identifier: "Workspace" });
@@ -30549,12 +30529,18 @@ async function getOrStartRuntimeUnsafe(options7) {
30549
30529
  statePath,
30550
30530
  source: options7.source
30551
30531
  });
30532
+ const runtimeFingerprint = runtimeFingerprintFor({
30533
+ projectDir,
30534
+ configPath,
30535
+ statePath,
30536
+ source: options7.source
30537
+ });
30552
30538
  const paths = runtimePaths(projectId, options7.rigkitHome);
30553
- const existing = await tryExistingRuntime(paths, projectId);
30539
+ const existing = await tryExistingRuntime(paths, projectId, runtimeFingerprint);
30554
30540
  if (existing)
30555
30541
  return existing;
30556
30542
  await withRuntimeLock(paths.lockPath, async () => {
30557
- const secondCheck = await tryExistingRuntime(paths, projectId);
30543
+ const secondCheck = await tryExistingRuntime(paths, projectId, runtimeFingerprint);
30558
30544
  if (secondCheck)
30559
30545
  return;
30560
30546
  await startRuntime({
@@ -30563,10 +30549,11 @@ async function getOrStartRuntimeUnsafe(options7) {
30563
30549
  configPath,
30564
30550
  statePath,
30565
30551
  projectId,
30552
+ runtimeFingerprint,
30566
30553
  paths
30567
30554
  });
30568
30555
  });
30569
- const started = await tryExistingRuntime(paths, projectId);
30556
+ const started = await tryExistingRuntime(paths, projectId, runtimeFingerprint);
30570
30557
  if (!started) {
30571
30558
  throw new RuntimeStartupError({
30572
30559
  reason: "unhealthy-after-start",
@@ -30582,12 +30569,33 @@ function projectIdFor(options7) {
30582
30569
  hash2.update(JSON.stringify({
30583
30570
  projectDir: import_node_path.resolve(options7.projectDir),
30584
30571
  configPath,
30585
- configHash: configHashFor(configPath),
30586
30572
  statePath: options7.statePath ? import_node_path.resolve(options7.statePath) : null,
30587
30573
  source: options7.source ?? null
30588
30574
  }));
30589
30575
  return `sha256-${hash2.digest("hex").slice(0, 32)}`;
30590
30576
  }
30577
+ function runtimeFingerprintFor(options7) {
30578
+ const projectDir = import_node_path.resolve(options7.projectDir);
30579
+ const configPath = import_node_path.resolve(options7.configPath);
30580
+ const statePath = options7.statePath ? import_node_path.resolve(options7.statePath) : null;
30581
+ const hash2 = import_node_crypto.createHash("sha256");
30582
+ hash2.update("project\x00");
30583
+ hash2.update(projectDir);
30584
+ hash2.update("\x00config\x00");
30585
+ hash2.update(configPath);
30586
+ hash2.update("\x00state\x00");
30587
+ hash2.update(statePath ?? "");
30588
+ hash2.update("\x00source\x00");
30589
+ hash2.update(JSON.stringify(options7.source ?? null));
30590
+ updateFileFingerprint(hash2, "config", configPath);
30591
+ for (const file2 of dotenvFilesFor(projectDir))
30592
+ updateFileFingerprint(hash2, "dotenv", file2);
30593
+ for (const file2 of projectFingerprintFiles(projectDir))
30594
+ updateFileFingerprint(hash2, "project-file", file2);
30595
+ updateProjectSurfaceFingerprint(hash2, projectDir);
30596
+ updateRigkitPackageFingerprint(hash2, import_node_path.join(projectDir, "node_modules", "@rigkit"));
30597
+ return `sha256-${hash2.digest("hex")}`;
30598
+ }
30591
30599
  function runtimePaths(projectId, rigkitHome = defaultRigkitHome()) {
30592
30600
  const root = import_node_path.join(rigkitHome, "runtimes");
30593
30601
  return {
@@ -30600,13 +30608,20 @@ function runtimePaths(projectId, rigkitHome = defaultRigkitHome()) {
30600
30608
  function defaultRigkitHome() {
30601
30609
  return process.env.RIGKIT_HOME ? import_node_path.resolve(process.env.RIGKIT_HOME) : import_node_path.join(import_node_os.homedir(), ".rigkit");
30602
30610
  }
30603
- async function tryExistingRuntime(paths, projectId) {
30611
+ async function tryExistingRuntime(paths, projectId, runtimeFingerprint) {
30604
30612
  const handle = readHandle(paths.handlePath);
30605
30613
  if (!handle || handle.projectId !== projectId)
30606
30614
  return;
30607
30615
  const token = readToken(handle.tokenPath);
30608
- if (!token)
30616
+ if (!token) {
30617
+ removeStale(paths);
30618
+ return;
30619
+ }
30620
+ if (handle.runtimeFingerprint !== runtimeFingerprint) {
30621
+ await shutdownRuntime(handle, token);
30622
+ removeStale(paths);
30609
30623
  return;
30624
+ }
30610
30625
  try {
30611
30626
  const body = await createRuntimeHttpClient({ baseUrl: handle.url, token }).health();
30612
30627
  if (body.projectId !== projectId) {
@@ -30616,6 +30631,13 @@ async function tryExistingRuntime(paths, projectId) {
30616
30631
  message: `runtime project mismatch`
30617
30632
  });
30618
30633
  }
30634
+ if (body.runtimeFingerprint !== runtimeFingerprint) {
30635
+ throw new RuntimeConnectionError({
30636
+ method: "GET",
30637
+ path: "/health",
30638
+ message: `runtime fingerprint mismatch`
30639
+ });
30640
+ }
30619
30641
  return createClient(handle, paths, token);
30620
30642
  } catch (error) {
30621
30643
  if (error instanceof RuntimeApiVersionError)
@@ -30632,6 +30654,8 @@ async function startRuntime(input) {
30632
30654
  "serve",
30633
30655
  "--project-id",
30634
30656
  input.projectId,
30657
+ "--runtime-fingerprint",
30658
+ input.runtimeFingerprint,
30635
30659
  "--project-dir",
30636
30660
  input.projectDir,
30637
30661
  "--config",
@@ -30783,7 +30807,7 @@ function readReadyLine(proc, paths, projectDir) {
30783
30807
  reason: "startup-timeout",
30784
30808
  projectDir,
30785
30809
  message: `Timed out waiting for Rigkit runtime to start`
30786
- }));
30810
+ }), { kill: true });
30787
30811
  }, 15000);
30788
30812
  const cleanup = () => {
30789
30813
  clearTimeout(timer);
@@ -30800,11 +30824,14 @@ function readReadyLine(proc, paths, projectDir) {
30800
30824
  cleanup();
30801
30825
  resolvePromise(line);
30802
30826
  };
30803
- function fail15(error) {
30827
+ function fail15(error, options7 = {}) {
30804
30828
  if (settled)
30805
30829
  return;
30806
30830
  settled = true;
30807
30831
  cleanup();
30832
+ if (options7.kill)
30833
+ killRuntimeProcess(proc);
30834
+ removeStale(paths);
30808
30835
  rejectPromise(error);
30809
30836
  }
30810
30837
  function onData(chunk3) {
@@ -30839,15 +30866,100 @@ function readReadyLine(proc, paths, projectDir) {
30839
30866
  proc.once("exit", onExit4);
30840
30867
  });
30841
30868
  }
30869
+ function killRuntimeProcess(proc) {
30870
+ if (!proc.pid)
30871
+ return;
30872
+ try {
30873
+ proc.kill("SIGTERM");
30874
+ } catch {}
30875
+ }
30842
30876
  function removeStale(paths) {
30843
30877
  import_node_fs.rmSync(paths.handlePath, { force: true });
30844
30878
  }
30845
- function configHashFor(configPath) {
30846
- if (!import_node_fs.existsSync(configPath))
30847
- return null;
30848
- const hash2 = import_node_crypto.createHash("sha256");
30849
- hash2.update(import_node_fs.readFileSync(configPath));
30850
- return hash2.digest("hex");
30879
+ async function shutdownRuntime(handle, token) {
30880
+ try {
30881
+ await createRuntimeHttpClient({ baseUrl: handle.url, token }).shutdown();
30882
+ } catch {
30883
+ if (handle.pid !== process.pid) {
30884
+ try {
30885
+ process.kill(handle.pid);
30886
+ } catch {}
30887
+ }
30888
+ }
30889
+ }
30890
+ function updateFileFingerprint(hash2, label, path) {
30891
+ hash2.update(`\x00${label}\x00${path}\x00`);
30892
+ if (!import_node_fs.existsSync(path)) {
30893
+ hash2.update("missing");
30894
+ return;
30895
+ }
30896
+ const stat = import_node_fs.statSync(path);
30897
+ if (!stat.isFile()) {
30898
+ hash2.update(`not-file:${stat.mode}`);
30899
+ return;
30900
+ }
30901
+ hash2.update(import_node_fs.readFileSync(path));
30902
+ }
30903
+ function projectFingerprintFiles(projectDir) {
30904
+ return [
30905
+ "package.json",
30906
+ "bun.lock",
30907
+ "bun.lockb",
30908
+ "pnpm-lock.yaml",
30909
+ "package-lock.json",
30910
+ "yarn.lock"
30911
+ ].map((file2) => import_node_path.join(projectDir, file2));
30912
+ }
30913
+ function updateProjectSurfaceFingerprint(hash2, projectDir) {
30914
+ if (!import_node_fs.existsSync(projectDir))
30915
+ return;
30916
+ const ignored = new Set([".git", ".rigkit", "node_modules", "dist", "build", ".next", ".astro"]);
30917
+ const entries2 = import_node_fs.readdirSync(projectDir, { withFileTypes: true }).filter((entry) => !ignored.has(entry.name)).map((entry) => `${entry.name}:${entry.isDirectory() ? "dir" : entry.isFile() ? "file" : "other"}`).sort();
30918
+ hash2.update("\x00project-surface\x00");
30919
+ hash2.update(entries2.join(`
30920
+ `));
30921
+ }
30922
+ function updateRigkitPackageFingerprint(hash2, scopeDir) {
30923
+ if (!import_node_fs.existsSync(scopeDir))
30924
+ return;
30925
+ const packageDirs = import_node_fs.readdirSync(scopeDir, { withFileTypes: true }).filter((entry) => entry.isDirectory() || entry.isSymbolicLink()).map((entry) => import_node_path.join(scopeDir, entry.name)).sort();
30926
+ for (const packageDir of packageDirs) {
30927
+ updateFileFingerprint(hash2, "rigkit-package", import_node_path.join(packageDir, "package.json"));
30928
+ for (const file2 of collectFiles(import_node_path.join(packageDir, "src"))) {
30929
+ updateFileFingerprint(hash2, "rigkit-source", file2);
30930
+ }
30931
+ }
30932
+ }
30933
+ function collectFiles(root) {
30934
+ if (!import_node_fs.existsSync(root))
30935
+ return [];
30936
+ const out = [];
30937
+ const visit = (dir) => {
30938
+ for (const entry of import_node_fs.readdirSync(dir, { withFileTypes: true })) {
30939
+ const path = import_node_path.join(dir, entry.name);
30940
+ if (entry.isDirectory()) {
30941
+ visit(path);
30942
+ } else if (entry.isFile()) {
30943
+ out.push(path);
30944
+ }
30945
+ }
30946
+ };
30947
+ visit(root);
30948
+ return out.sort();
30949
+ }
30950
+ function dotenvFilesFor(projectDir) {
30951
+ const files = [];
30952
+ let current = projectDir;
30953
+ while (true) {
30954
+ const candidate = import_node_path.join(current, ".env");
30955
+ if (import_node_fs.existsSync(candidate))
30956
+ files.unshift(candidate);
30957
+ const parent = import_node_path.dirname(current);
30958
+ if (parent === current)
30959
+ break;
30960
+ current = parent;
30961
+ }
30962
+ return files;
30851
30963
  }
30852
30964
  function isFileExistsError(error) {
30853
30965
  return Boolean(error && typeof error === "object" && error.code === "EEXIST");
@@ -30973,7 +31085,7 @@ function findConfigUp(startDir, fileExists = import_node_fs2.existsSync) {
30973
31085
  }
30974
31086
 
30975
31087
  // src/version.ts
30976
- var RIGKIT_PROVIDER_VSCODE_VERSION = "0.2.1";
31088
+ var RIGKIT_PROVIDER_VSCODE_VERSION = "0.2.3";
30977
31089
 
30978
31090
  // src/extension.ts
30979
31091
  var VSCODE_HOST_METHODS = [
@@ -31022,11 +31134,6 @@ class RigkitVsCodeHost {
31022
31134
  const selected = operation ?? await pickOperation(operations);
31023
31135
  if (!selected)
31024
31136
  return;
31025
- const unsupported = unsupportedRequirements(selected);
31026
- if (unsupported) {
31027
- await vscode.window.showErrorMessage(unsupported);
31028
- return;
31029
- }
31030
31137
  const workspaces = await this.listWorkspaces();
31031
31138
  const input = await collectOperationInput(selected, workspaces, operationPrompt(presetWorkspace));
31032
31139
  if (!input)
@@ -31148,7 +31255,7 @@ class WorkspacesProvider {
31148
31255
  getTreeItem(workspace2) {
31149
31256
  const item = new vscode.TreeItem(workspace2.name, vscode.TreeItemCollapsibleState.None);
31150
31257
  item.description = workspace2.workflow;
31151
- item.tooltip = workspace2.resourceId || workspace2.name;
31258
+ item.tooltip = workspace2.name;
31152
31259
  item.iconPath = new vscode.ThemeIcon("server");
31153
31260
  item.contextValue = "rigkitWorkspace";
31154
31261
  item.command = {
@@ -31212,7 +31319,7 @@ async function pickWorkspace(title, workspaces) {
31212
31319
  const items = workspaces.map((workspace2) => ({
31213
31320
  label: workspace2.name,
31214
31321
  description: workspace2.workflow,
31215
- detail: workspace2.resourceId,
31322
+ detail: workspace2.createdAt,
31216
31323
  workspace: workspace2
31217
31324
  }));
31218
31325
  const picked = await vscode.window.showQuickPick(items, { title, ignoreFocusOut: true });
@@ -31301,17 +31408,6 @@ async function openExternal(params2) {
31301
31408
  await vscode.env.openExternal(vscode.Uri.parse(target));
31302
31409
  return null;
31303
31410
  }
31304
- function unsupportedRequirements(operation) {
31305
- const unsupportedCapability = operation.requiredHostCapabilities?.[0];
31306
- if (unsupportedCapability) {
31307
- return `Operation "${operation.id}" requires host capability "${unsupportedCapability.id}". VS Code does not support that capability.`;
31308
- }
31309
- const unsupportedMethod = operation.requiredHostMethods?.find((method) => !VSCODE_HOST_METHODS.some((supported) => supported.id === method.id && (!method.modes?.length || method.modes.every((mode) => supported.modes?.includes(mode)))));
31310
- if (unsupportedMethod) {
31311
- return `Operation "${operation.id}" requires host method "${unsupportedMethod.id}".`;
31312
- }
31313
- return;
31314
- }
31315
31411
  function isHostRequestMessage(value3) {
31316
31412
  return isRecord3(value3) && value3.type === "host.request" && typeof value3.id === "string" && typeof value3.method === "string";
31317
31413
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rigkit/provider-vscode",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -57,7 +57,7 @@
57
57
  "README.md"
58
58
  ],
59
59
  "dependencies": {
60
- "@rigkit/runtime-client": "0.2.1"
60
+ "@rigkit/runtime-client": "0.2.3"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@types/bun": "latest",
package/src/extension.ts CHANGED
@@ -82,12 +82,6 @@ class RigkitVsCodeHost {
82
82
  const selected = operation ?? await pickOperation(operations);
83
83
  if (!selected) return;
84
84
 
85
- const unsupported = unsupportedRequirements(selected);
86
- if (unsupported) {
87
- await vscode.window.showErrorMessage(unsupported);
88
- return;
89
- }
90
-
91
85
  const workspaces = await this.listWorkspaces();
92
86
  const input = await collectOperationInput(selected, workspaces, operationPrompt(presetWorkspace));
93
87
  if (!input) return;
@@ -213,7 +207,7 @@ class WorkspacesProvider implements vscode.TreeDataProvider<RuntimeControlWorksp
213
207
  getTreeItem(workspace: RuntimeControlWorkspace): vscode.TreeItem {
214
208
  const item = new vscode.TreeItem(workspace.name, vscode.TreeItemCollapsibleState.None);
215
209
  item.description = workspace.workflow;
216
- item.tooltip = workspace.resourceId || workspace.name;
210
+ item.tooltip = workspace.name;
217
211
  item.iconPath = new vscode.ThemeIcon("server");
218
212
  item.contextValue = "rigkitWorkspace";
219
213
  item.command = {
@@ -286,7 +280,7 @@ async function pickWorkspace(
286
280
  const items = workspaces.map((workspace) => ({
287
281
  label: workspace.name,
288
282
  description: workspace.workflow,
289
- detail: workspace.resourceId,
283
+ detail: workspace.createdAt,
290
284
  workspace,
291
285
  }));
292
286
  const picked = await vscode.window.showQuickPick(items, { title, ignoreFocusOut: true });
@@ -381,22 +375,6 @@ async function openExternal(params: unknown): Promise<null> {
381
375
  return null;
382
376
  }
383
377
 
384
- function unsupportedRequirements(operation: RuntimeControlOperation): string | undefined {
385
- const unsupportedCapability = operation.requiredHostCapabilities?.[0];
386
- if (unsupportedCapability) {
387
- return `Operation "${operation.id}" requires host capability "${unsupportedCapability.id}". VS Code does not support that capability.`;
388
- }
389
- const unsupportedMethod = operation.requiredHostMethods?.find((method) =>
390
- !VSCODE_HOST_METHODS.some((supported) =>
391
- supported.id === method.id && (!method.modes?.length || method.modes.every((mode) => supported.modes?.includes(mode)))
392
- )
393
- );
394
- if (unsupportedMethod) {
395
- return `Operation "${operation.id}" requires host method "${unsupportedMethod.id}".`;
396
- }
397
- return undefined;
398
- }
399
-
400
378
  function isHostRequestMessage(value: unknown): value is HostRequestMessage {
401
379
  return isRecord(value) &&
402
380
  value.type === "host.request" &&
package/src/input.test.ts CHANGED
@@ -71,13 +71,8 @@ function workspaceRecord(name: string): RuntimeControlWorkspace {
71
71
  return {
72
72
  id: `ws-${name}`,
73
73
  name,
74
- providerId: "test",
75
74
  workflow: "test",
76
- resourceId: `resource-${name}`,
77
- sourceRef: null,
78
- context: {},
79
- metadata: {},
80
- data: {},
75
+ ctx: {},
81
76
  createdAt: "2026-05-10T00:00:00.000Z",
82
77
  updatedAt: "2026-05-10T00:00:00.000Z",
83
78
  };
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const RIGKIT_PROVIDER_VSCODE_VERSION = "0.2.1";
1
+ export const RIGKIT_PROVIDER_VSCODE_VERSION = "0.2.3";