typebulb 0.58.1 → 0.59.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.
@@ -119,7 +119,7 @@ body {
119
119
  align-items: center;
120
120
  }
121
121
  /* THE CENTERING RECIPE for EVERY word-label control on any surface — the status-bar pills and
122
- floating overlay pills below, and the launcher row's trust switch + B scope chip. One rule = one
122
+ floating overlay pills below, and the launcher row's trust switch. One rule = one
123
123
  source of vertical alignment; when these drift apart it reads as amateurish, so a new word
124
124
  control joins this selector rather than centering itself (don't re-tweak per button — fix it
125
125
  here or nowhere). Icon buttons opt back out, keeping flex (see .pill.glyph). Segoe UI's font
@@ -128,7 +128,7 @@ body {
128
128
  line box to the glyphs (cap→baseline) so centering centers the letters themselves. It only
129
129
  applies to block containers (not flex), hence inline-block + align-content, not inline-flex
130
130
  + align-items. Browsers without text-box (Firefox) fall back to plain line-box centering. */
131
- .pill, .token, .overlay-pill, .trust-toggle, .batch-b {
131
+ .pill, .token, .overlay-pill, .trust-toggle {
132
132
  display: inline-block;
133
133
  align-content: center;
134
134
  text-align: center;
@@ -137,7 +137,7 @@ body {
137
137
  /* Chip shape shared by the status-bar pills (interactive and passive) AND the floating overlay
138
138
  pills (copy, breakout, code⇄run) — opaque, so they read cleanly over the message text the
139
139
  transparent strip lets through. The launcher row's pills take only the recipe above; their
140
- shape is the row's (.trust-toggle, .batch-b). */
140
+ shape is the row's (.trust-toggle). */
141
141
  .pill, .token, .overlay-pill {
142
142
  height: var(--pill-h);
143
143
  padding: 0 .7rem;
@@ -986,11 +986,6 @@ a.server-port:hover { text-decoration: underline; }
986
986
  present makes that inset one number — the same "effectively always present" the model menu's
987
987
  header padding already hardcodes. (scrollbar-gutter is the stated fix and is ignored here.) */
988
988
  .bulb-list { display: grid; grid-template-columns: auto 1fr auto auto auto auto; grid-auto-rows: max-content; column-gap: .6rem; row-gap: .15rem; align-items: center; align-content: start; padding-right: 4px; flex: 1; min-height: 0; overflow-y: scroll; }
989
- /* The scope column (TB-Batch.md Invariant 7): a seventh track heading the control cluster (before
990
- trust — a launch scope is an execution concern, like a trust tier), present only while some row
991
- carries a scope (bulbsPill.ts anyScope — rows emit a matching cell, spacer included). The B
992
- affordance keeps it one --pill-h square. */
993
- .bulb-list.has-scope { grid-template-columns: auto 1fr auto auto auto auto auto; }
994
989
  /* A stopped bulb's name isn't a link (no running URL), so it stays plain foreground. */
995
990
  .server-name.stopped { color: var(--fg); }
996
991
  /* Downloaded-bulb rows (TB-Agent-Mirror.md): the user link — the folder/user slug (`samples`) in
@@ -1001,24 +996,6 @@ a.server-port:hover { text-decoration: underline; }
1001
996
  .server-name.remote:hover { text-decoration: none; }
1002
997
  .sample-link { color: var(--muted); font-size: .76rem; text-decoration: none; cursor: pointer; flex: none; }
1003
998
  .sample-link:hover { color: var(--accent); text-decoration: underline; }
1004
- /* The batch affordance (bulbsPill.ts scopeCell, TB-Batch.md Invariant 7): one B glyph per row —
1005
- the row shows THAT a scope applies, the tooltip and click-menu name it. Dim = batches exist but
1006
- launch is unscoped; lit (.on) = play launches scoped (newest default) or running scoped.
1007
- Static (running) keeps the lit look without the hand cursor. */
1008
- /* Square (its one glyph has no text pill's width to earn) and otherwise typography-free: the shared
1009
- pill box, font and trim, so its B is the same size and sits on the same baseline as the trust
1010
- switch beside it. Its own font-family was the bug — a monospace cap is a different size from a
1011
- Segoe cap at one font-size, which reads as two badly-aligned widgets. */
1012
- .batch-b { font-size: var(--pill-font); color: var(--muted); background: transparent; border: 1px solid var(--border); border-radius: 5px; width: var(--pill-h); height: var(--pill-h); padding: 0; cursor: pointer; }
1013
- .batch-b.on { color: var(--accent); border-color: var(--accent); }
1014
- .batch-b.static { cursor: default; }
1015
- /* The B's menu rides the composer popup register (.at-popup/.at-row/.dlg-catcher — one mini-menu
1016
- UI across the mirror). Only the positioning is local: fixed coords (inline style, measured from
1017
- the B at open) so the scrolling list can't clip it, sized to its content instead of the
1018
- composer's full-width anchor. */
1019
- .at-popup.batch-pop { position: fixed; left: auto; right: auto; bottom: auto; width: max-content; min-width: 7rem; margin-inline: 0; }
1020
- /* 'unscoped' is the escape hatch, not a batch — a divider + muted italic set it apart from the list. */
1021
- .batch-pop .at-row.unscoped { color: var(--muted); font-style: italic; border-top: 1px solid var(--border); border-radius: 0 0 6px 6px; margin-top: .15rem; padding-top: .4rem; }
1022
999
  /* A remote pull's visible failure (bulbsPill.ts pullErrors) — the sample-link register, error-tinted. */
1023
1000
  .pull-error { color: var(--err); font-size: .76rem; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1024
1001
  /* The remote fold (bulbsPill.ts groupRow / fold-row): the header and the remote rows within share
@@ -1 +1 @@
1
- {"version":3,"file":"tbTypings.d.ts","sourceRoot":"","sources":["../../dts/src/tbTypings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgTH,kEAAkE;AAClE,eAAO,MAAM,eAAe,QAO3B,CAAA;AASD;;;wDAGwD;AACxD,eAAO,MAAM,eAAe,QAO3B,CAAA"}
1
+ {"version":3,"file":"tbTypings.d.ts","sourceRoot":"","sources":["../../dts/src/tbTypings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiTH,kEAAkE;AAClE,eAAO,MAAM,eAAe,QAO3B,CAAA;AASD;;;wDAGwD;AACxD,eAAO,MAAM,eAAe,QAO3B,CAAA"}
@@ -178,8 +178,8 @@ const fs = `
178
178
  *
179
179
  * Relative paths resolve against the bulb's folder (\`tb.dir\` —
180
180
  * \`<bulb-dir>/<filename-stem>/\`, created on demand), so
181
- * \`tb.fs.write('results.json')\` lands beside the bulb. \`../\` reaches sibling
182
- * bulbs' folders; everything stays confined to the project (the launch cwd).
181
+ * \`tb.fs.write('results.json')\` lands beside the bulb. Nothing reaches outside
182
+ * that folder: \`../\` and absolute paths beyond it throw.
183
183
  * Throws in ide/published mode.
184
184
  */
185
185
  fs: {
@@ -189,11 +189,12 @@ const fs = `
189
189
  readBytes(path: string): Promise<Uint8Array>;
190
190
  /** Write text or raw bytes to a file. Creates parent directories if needed. */
191
191
  write(path: string, content: string | Uint8Array): Promise<boolean>;
192
+ /** List a folder's immediate children (default: the bulb's folder): name, whether it is a folder, and mtime (epoch ms). Unsorted; throws if the folder does not exist. */
193
+ list(path?: string): Promise<Array<{ name: string; dir: boolean; mtime: number }>>;
192
194
  };`;
193
195
  const dir = `
194
196
  /**
195
197
  * The bulb's folder — absolute path to \`<bulb-dir>/<filename-stem>/\`
196
- * (or its \`batches/<name>/\` folder when the run is scoped with \`--batch\`).
197
198
  *
198
199
  * For interop only (handing a path to \`server.ts\` or a spawned tool):
199
200
  * \`tb.fs\` already resolves relative paths against it, so bulb code writing
@@ -1 +1 @@
1
- {"version":3,"file":"tbTypings.js","sourceRoot":"","sources":["../../dts/src/tbTypings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,WAAW,GAAG;;;;;;;;;;;uCAWmB,CAAA;AAEvC,MAAM,OAAO,GAAG;;;;;;;;;yCASyB,CAAA;AAEzC,uFAAuF;AACvF,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;6CAuBiB,CAAA;AAE7C,2DAA2D;AAC3D,MAAM,SAAS,GAAG;;;;;;;;;;;IAWd,CAAA;AAEJ,oGAAoG;AACpG,MAAM,WAAW,GAAG;;;;;;;;;;;;CAYnB,CAAA;AAED,wGAAwG;AACxG,MAAM,YAAY,GAAG;;;CAGpB,CAAA;AAED,MAAM,EAAE,GAAG;;;;;;;;;;OAUJ,SAAS;;;;;;;;;;;;;;;;;aAiBH,SAAS;KACjB,CAAA;AAEL,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA8BkB,CAAA;AAEjC,MAAM,KAAK,GAAG;;;;;;;;;;;;uCAYyB,CAAA;AAEvC,MAAM,IAAI,GAAG;;;;;;;;;;UAUH,SAAS,GAAG,CAAA;AAEtB,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;;KAiBN,CAAA;AAEL,MAAM,GAAG,GAAG;;;;;;;;;wBASY,CAAA;AAExB,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAqDA,CAAA;AAE1B,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;6DAiB2C,CAAA;AAE7D,MAAM,GAAG,GAAG;;;;;;;;;6BASiB,CAAA;AAE7B,MAAM,iBAAiB,GAAG;;;;;;;;;;iFAUuD,CAAA;AAEjF,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,WAAW,GAAG,YAAY;;;;;qBAKvC,WAAW,GAAG,iBAAiB,GAAG,OAAO,GAAG,mBAAmB,GAAG,GAAG,GAAG,iBAAiB,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;;CAEjK,CAAA;AAED,MAAM,SAAS,GAAG;;;;;6BAKW,CAAA;AAE7B;;;wDAGwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,WAAW,GAAG,YAAY;;;;;qBAKvC,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,GAAG,IAAI;;CAE7D,CAAA"}
1
+ {"version":3,"file":"tbTypings.js","sourceRoot":"","sources":["../../dts/src/tbTypings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,WAAW,GAAG;;;;;;;;;;;uCAWmB,CAAA;AAEvC,MAAM,OAAO,GAAG;;;;;;;;;yCASyB,CAAA;AAEzC,uFAAuF;AACvF,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;6CAuBiB,CAAA;AAE7C,2DAA2D;AAC3D,MAAM,SAAS,GAAG;;;;;;;;;;;IAWd,CAAA;AAEJ,oGAAoG;AACpG,MAAM,WAAW,GAAG;;;;;;;;;;;;CAYnB,CAAA;AAED,wGAAwG;AACxG,MAAM,YAAY,GAAG;;;CAGpB,CAAA;AAED,MAAM,EAAE,GAAG;;;;;;;;;;OAUJ,SAAS;;;;;;;;;;;;;;;;;aAiBH,SAAS;KACjB,CAAA;AAEL,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA8BkB,CAAA;AAEjC,MAAM,KAAK,GAAG;;;;;;;;;;;;uCAYyB,CAAA;AAEvC,MAAM,IAAI,GAAG;;;;;;;;;;UAUH,SAAS,GAAG,CAAA;AAEtB,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;;;;KAmBN,CAAA;AAEL,MAAM,GAAG,GAAG;;;;;;;;wBAQY,CAAA;AAExB,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAqDA,CAAA;AAE1B,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;6DAiB2C,CAAA;AAE7D,MAAM,GAAG,GAAG;;;;;;;;;6BASiB,CAAA;AAE7B,MAAM,iBAAiB,GAAG;;;;;;;;;;iFAUuD,CAAA;AAEjF,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,WAAW,GAAG,YAAY;;;;;qBAKvC,WAAW,GAAG,iBAAiB,GAAG,OAAO,GAAG,mBAAmB,GAAG,GAAG,GAAG,iBAAiB,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;;CAEjK,CAAA;AAED,MAAM,SAAS,GAAG;;;;;6BAKW,CAAA;AAE7B;;;wDAGwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,WAAW,GAAG,YAAY;;;;;qBAKvC,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,GAAG,IAAI;;CAE7D,CAAA"}