@fnndsc/brasa 0.14.0 → 0.15.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.
@@ -10,16 +10,13 @@ import { vfsDispatcher } from '@fnndsc/salsa';
10
10
  import { session } from '../../session/index.js';
11
11
  import chalk from 'chalk';
12
12
  import * as path from 'path';
13
+ import { ambient_publish, ambient_hasListeners } from '../../core/ambient.js';
13
14
  import { grid_render, long_render } from '@fnndsc/chili/views/ls.js';
14
15
  import { list_applySort } from '@fnndsc/chili/utils/sort.js';
15
16
  import { listCache_get, Ok, Err, errorStack, envelope_ok, envelope_error } from '@fnndsc/cumin';
16
17
  import { spinner } from '../spinner.js';
17
18
  import { error_stripDebugPrefix } from '../../builtins/utils.js';
18
19
  import { listingItemsFromVfs_make } from './listing.js';
19
- /**
20
- * Virtual File System Router.
21
- * Dispatches operations to Virtual or Native providers.
22
- */
23
20
  export class VFS {
24
21
  /**
25
22
  * Gets data for a directory (Virtual or Native).
@@ -30,6 +27,51 @@ export class VFS {
30
27
  * @returns Result<ListingItem[]> - Ok with items or Err with error message.
31
28
  */
32
29
  async data_get(targetPath, options = {}) {
30
+ const resolved = await this.listing_get(targetPath, options);
31
+ return resolved.ok ? Ok(resolved.value.items) : Err();
32
+ }
33
+ /** Background revalidations in flight, one per path. */
34
+ revalidating = new Map();
35
+ /**
36
+ * Re-fetches one listing behind a stale serve and publishes the fresh
37
+ * result as an ambient `fs.listing` envelope, so every surface showing
38
+ * that path repaints. One fetch per path at a time.
39
+ *
40
+ * @param effectivePath - The absolute path to refresh.
41
+ */
42
+ listing_revalidate(effectivePath) {
43
+ const inflight = this.revalidating.get(effectivePath);
44
+ if (inflight)
45
+ return inflight;
46
+ const run = (async () => {
47
+ const fetched = await vfsDispatcher.list(effectivePath, {});
48
+ if (!fetched.ok)
49
+ return;
50
+ const items = listingItemsFromVfs_make(fetched.value);
51
+ listCache_get().cache_set(effectivePath, items);
52
+ ambient_publish({
53
+ kind: 'envelope',
54
+ envelope: { status: 'ok', rendered: '', model: { kind: 'fs.listing', data: [{ path: effectivePath, items, fresh: true }] } },
55
+ });
56
+ })()
57
+ .catch(() => { })
58
+ .finally(() => { this.revalidating.delete(effectivePath); });
59
+ this.revalidating.set(effectivePath, run);
60
+ return run;
61
+ }
62
+ /**
63
+ * Resolves a directory listing with its freshness. A fresh cached
64
+ * listing is served as is. A stale one is served at once only when a
65
+ * host can carry the refresh (an ambient listener exists — the daemon),
66
+ * with the revalidation running behind it; at a plain console the stale
67
+ * entry is refetched in line, because nobody would deliver the refresh.
68
+ * `/proc` paths never touch this cache.
69
+ *
70
+ * @param targetPath - The path to list; the working directory when empty.
71
+ * @param options - Sort and `-d` options.
72
+ * @returns The listing, its absolute path, and whether it is current.
73
+ */
74
+ async listing_get(targetPath, options = {}) {
33
75
  try {
34
76
  const cwd = await session.getCWD();
35
77
  const effectivePath = targetPath
@@ -37,7 +79,8 @@ export class VFS {
37
79
  : cwd;
38
80
  // -d: show the target entry itself rather than descending into it
39
81
  if (options.directory && targetPath) {
40
- return this.directoryEntry_get(effectivePath, options);
82
+ const entry = await this.directoryEntry_get(effectivePath, options);
83
+ return entry.ok ? Ok({ path: effectivePath, items: entry.value, fresh: true }) : Err();
41
84
  }
42
85
  // /proc paths are backed by ProcCache which manages its own freshness —
43
86
  // skip listCache entirely so proc refresh and live status reads are visible.
@@ -46,17 +89,19 @@ export class VFS {
46
89
  const listCache = listCache_get();
47
90
  if (!isProcPath) {
48
91
  const cached = listCache.cache_get(effectivePath);
49
- if (cached) {
92
+ if (cached && (cached.fresh || ambient_hasListeners())) {
93
+ if (!cached.fresh)
94
+ void this.listing_revalidate(effectivePath);
50
95
  const sortField = options.sort || 'name';
51
96
  const sortedItems = list_applySort(cached.data, sortField, options.reverse);
52
- return Ok(sortedItems);
97
+ return Ok({ path: effectivePath, items: sortedItems, fresh: cached.fresh });
53
98
  }
54
99
  // Shell wildcard expansion reads and caches the parent directory before
55
100
  // passing each matched path to ls. Leaf entries are not directories to
56
101
  // descend into, so return the matching cached entry itself.
57
102
  const parentLeaf = this.leafFromParentCache_get(effectivePath);
58
103
  if (parentLeaf) {
59
- return Ok([parentLeaf]);
104
+ return Ok({ path: effectivePath, items: [parentLeaf], fresh: true });
60
105
  }
61
106
  }
62
107
  // Delegate path queries to the unified vfsDispatcher (which handles both virtual and native paths)
@@ -67,7 +112,7 @@ export class VFS {
67
112
  if (!isProcPath) {
68
113
  listCache.cache_set(effectivePath, items);
69
114
  }
70
- return Ok(items);
115
+ return Ok({ path: effectivePath, items, fresh: true });
71
116
  }
72
117
  return Err();
73
118
  }
@@ -125,7 +170,11 @@ export class VFS {
125
170
  if (!cached)
126
171
  return null;
127
172
  const item = cached.data.find((candidate) => candidate.name === baseName);
128
- if (!item || item.type === 'dir' || item.type === 'vfs' || item.type === 'job') {
173
+ // A link is not a leaf: plain `ls` follows a link to a directory (POSIX),
174
+ // so it must fall through to the dispatcher, whose PathMapper resolves
175
+ // the target. Returning the link entry here rendered `ls ~/public` as
176
+ // the link itself whenever the parent listing happened to be cached.
177
+ if (!item || item.type === 'dir' || item.type === 'vfs' || item.type === 'job' || item.type === 'link') {
129
178
  return null;
130
179
  }
131
180
  return item;
@@ -146,11 +195,10 @@ export class VFS {
146
195
  const effectivePath = targetPath
147
196
  ? path.posix.resolve(cwd, targetPath)
148
197
  : cwd;
149
- // Check if we're serving from stale cache BEFORE fetching
150
- const listCache = listCache_get();
151
- const cached = listCache.cache_get(effectivePath);
152
- const wasStale = cached && !cached.fresh;
153
- const isCacheMiss = !cached;
198
+ // A cache miss will wait on the wire; a stale entry may be served at
199
+ // once (listing_get decides, and revalidates behind it where a host can
200
+ // carry the refresh).
201
+ const isCacheMiss = !listCache_get().cache_get(effectivePath);
154
202
  // For cache miss, show loading indicator after 500ms timeout
155
203
  let spinnerStarted = false; // Flag to track if spinner was actually started
156
204
  let spinnerDelayTimeout = null;
@@ -161,7 +209,8 @@ export class VFS {
161
209
  }, 500);
162
210
  }
163
211
  // Fetch data (may be from cache)
164
- const result = await this.data_get(targetPath, options);
212
+ const listing = await this.listing_get(targetPath, options);
213
+ const result = listing.ok ? Ok(listing.value.items) : Err();
165
214
  // Clear loading timeout and indicator
166
215
  if (spinnerDelayTimeout) {
167
216
  clearTimeout(spinnerDelayTimeout);
@@ -181,41 +230,13 @@ export class VFS {
181
230
  let rendered = options.long
182
231
  ? `${long_render(result.value, { human: !!options.human })}\n`
183
232
  : `${grid_render(result.value, { oneColumn: !!options.oneColumn })}\n`;
184
- // If we served stale cache, note it and refresh in background.
185
- if (wasStale) {
233
+ // Served stale: say so. The refresh is already running behind this
234
+ // answer and reaches every surface as an ambient listing.
235
+ if (listing.ok && !listing.value.fresh) {
186
236
  rendered += `${chalk.gray('(cached, refreshing...)')}\n`;
187
- // Trigger background refresh - don't await. Fenced in its own error-stack
188
- // scope so its pushes/pops cannot corrupt a concurrent foreground
189
- // command's error-drain window.
190
- errorStack.scope_run(() => {
191
- this.refreshInBackground(effectivePath, options).catch(() => {
192
- // Silently ignore refresh errors - user has moved on
193
- });
194
- });
195
237
  }
196
238
  return envelope_ok(rendered);
197
239
  }
198
- /**
199
- * Refreshes cache in the background without blocking or updating display.
200
- * Used for optimistic rendering - fetch fresh data after serving stale cache.
201
- *
202
- * @param targetPath - The path to refresh.
203
- * @param options - Options including sort and reverse.
204
- */
205
- async refreshInBackground(targetPath, options) {
206
- try {
207
- // Invalidate cache to force fresh fetch
208
- const listCache = listCache_get();
209
- listCache.cache_invalidate(targetPath);
210
- // Fetch fresh data - this will repopulate cache
211
- await this.data_get(targetPath, options);
212
- // Don't update display - user has moved on
213
- // Fresh data is now cached for next access
214
- }
215
- catch (_error) {
216
- // Silently fail - background refresh is best-effort
217
- }
218
- }
219
240
  }
220
241
  /**
221
242
  * Shared VFS singleton.
@@ -1 +1 @@
1
- {"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../../src/lib/vfs/vfs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAmB,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAwB,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9H,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD;;;GAGG;AACH,MAAM,OAAO,GAAG;IACd;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,CAAC,UAAmB,EAAE,UAAiG,EAAE;QACrI,IAAI,CAAC;YACH,MAAM,GAAG,GAAW,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM,aAAa,GAAW,UAAU;gBACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;gBACrC,CAAC,CAAC,GAAG,CAAC;YAER,kEAAkE;YAClE,IAAI,OAAO,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACzD,CAAC;YAED,wEAAwE;YACxE,6EAA6E;YAC7E,MAAM,UAAU,GAAY,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAE9D,0CAA0C;YAC1C,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAgB,aAAa,CAAC,CAAC;gBACjE,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,SAAS,GAAuC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;oBAC7E,MAAM,WAAW,GAAkB,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC3F,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;gBACzB,CAAC;gBAED,wEAAwE;gBACxE,uEAAuE;gBACvE,4DAA4D;gBAC5D,MAAM,UAAU,GAAuB,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;gBACnF,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,mGAAmG;YACnG,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACnE,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAkB,wBAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAEvE,0CAA0C;gBAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC;gBAED,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;YAED,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAW,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChF,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,iCAAiC,QAAQ,EAAE,CAAC,CAAC;YAC5E,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,kBAAkB,CAC9B,YAAoB,EACpB,OAAyE;QAEzE,MAAM,QAAQ,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,IAAI,YAAY,KAAK,GAAG,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,kDAAkD;QAClD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,IAAI,WAAW,GAAyB,IAAI,CAAC;QAE7C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAgB,UAAU,CAAC,CAAC;QAC9D,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACnE,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;gBACpB,WAAW,GAAG,wBAAwB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC3D,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,KAAK,GAA4B,WAAW,CAAC,IAAI,CAAC,CAAC,IAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YACvG,IAAI,KAAK;gBAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,mDAAmD;QACnD,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IAED;;;;;OAKG;IACK,uBAAuB,CAAC,YAAoB;QAClD,MAAM,QAAQ,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC,SAAS,CAAgB,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,IAAI,GAA4B,MAAM,CAAC,IAAI,CAAC,IAAI,CACpD,CAAC,SAAsB,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,CACjE,CAAC;QACF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI,CAAC,UAAmB,EAAE,UAAuJ,EAAE;QACvL,4CAA4C;QAC5C,MAAM,GAAG,GAAW,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAW,UAAU;YACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;YACrC,CAAC,CAAC,GAAG,CAAC;QAER,0DAA0D;QAC1D,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAmB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACzD,MAAM,WAAW,GAAY,CAAC,MAAM,CAAC;QAErC,6DAA6D;QAC7D,IAAI,cAAc,GAAY,KAAK,CAAC,CAAC,gDAAgD;QACrF,IAAI,mBAAmB,GAA0B,IAAI,CAAC;QAEtD,IAAI,WAAW,EAAE,CAAC;YAChB,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACpC,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC,CAAC,kCAAkC;gBACzF,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;QAED,iCAAiC;QACjC,MAAM,MAAM,GAA0B,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE/E,sCAAsC;QACtC,IAAI,mBAAmB,EAAE,CAAC;YACxB,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,WAAW,GAAW,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACzG,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;QAED,0BAA0B;QAC1B,IAAI,QAAQ,GAAW,OAAO,CAAC,IAAI;YACjC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI;YAC9D,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;QAEzE,+DAA+D;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;YACzD,0EAA0E;YAC1E,kEAAkE;YAClE,gCAAgC;YAChC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE;gBACxB,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oBAC1D,qDAAqD;gBACvD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,mBAAmB,CAAC,UAAkB,EAAE,OAA8F;QAClJ,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAEvC,gDAAgD;YAChD,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEzC,2CAA2C;YAC3C,2CAA2C;QAC7C,CAAC;QAAC,OAAO,MAAe,EAAE,CAAC;YACzB,oDAAoD;QACtD,CAAC;IACH,CAAC;CAGF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAQ,IAAI,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../../src/lib/vfs/vfs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fnndsc/brasa",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "BRASA Runs Abstracted Shell Actions - the hostable ChRIS shell engine (kernel)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -44,8 +44,8 @@
44
44
  "license": "MIT",
45
45
  "dependencies": {
46
46
  "@fnndsc/chili": "^3.6.5",
47
- "@fnndsc/cumin": "^3.15.0",
48
- "@fnndsc/salsa": "^3.10.0",
47
+ "@fnndsc/cumin": "^3.16.0",
48
+ "@fnndsc/salsa": "^3.11.0",
49
49
  "chalk": "^4.1.2",
50
50
  "cli-highlight": "^2.1.11",
51
51
  "js-yaml": "^4.1.0",