@rigxyz/tapd 0.6.5 → 0.6.7

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.
package/dist/index.d.ts CHANGED
@@ -9,19 +9,28 @@ import { GetBindingResponse, PrepareUploadRequest, PrepareUploadResponse, Comple
9
9
  * bulky generated artifacts (per design doc § "Large File Policy").
10
10
  * Bulky media/archives are re-included under the top-level
11
11
  * `attachments/` folder (chat attachments must sync).
12
- * A user CAN override these via `!pattern` in their .tapignore.
12
+ * A user CAN override the non-secret ones (dependencies, media, …)
13
+ * via `!pattern` in their .tapignore.
13
14
  * 2. Project .tapignore.
14
- * 3. Always-excluded paths — Tap's own local metadata. These cannot be
15
- * re-enabled by `!pattern`; the relay would reject the upload anyway
16
- * (validateRigPath rejects reserved paths).
15
+ * 3. Secrets + conflict sidecars (NON_OVERRIDABLE_IGNORE_LINES), added
16
+ * again after the project file. The .tapignore itself syncs from
17
+ * other members, so a `!.env` there would otherwise make every
18
+ * member's daemon upload their own .env.
19
+ * 4. Always-excluded paths — Tap's own local metadata, plus the paths
20
+ * that never sync between members (core isNeverSyncPath: .git,
21
+ * agent/MCP config). Matched case-insensitively, never re-enabled by
22
+ * `!pattern`; the relay refuses them anyway (validateRigPath rejects
23
+ * reserved paths, the change route refuses never-sync ones).
17
24
  */
18
25
 
19
26
  declare const BUILTIN_IGNORE_LINES: ReadonlyArray<string>;
20
27
  declare function loadIgnore(rootDir: string): Ignore;
21
28
  /**
22
29
  * Hard-exclude check that runs in addition to .tapignore. Tap's own
23
- * local metadata is invisible to sync no matter what the user puts in
24
- * their .tapignore — including `!pattern` overrides.
30
+ * local metadata and the never-sync paths (.git, agent/MCP config) are
31
+ * invisible to sync no matter what the user puts in their .tapignore —
32
+ * including `!pattern` overrides. Case-insensitive: on APFS `.RIG/` is
33
+ * `.rig/`.
25
34
  */
26
35
  declare function isAlwaysExcluded(posixPath: string): boolean;
27
36
 
@@ -287,6 +296,10 @@ declare function hashFile(absPath: string): Promise<string>;
287
296
  * 7. Populate .rig/tap/state.local.db with last_applied_change_id
288
297
  * per path, and the resulting cursor.
289
298
  *
299
+ * `deferUpload` stops after step 3a (plus an empty state DB): the binding
300
+ * exists and the config is on disk, and the daemon's first scan uploads
301
+ * everything (`tapd start` pushes whatever the relay doesn't know yet).
302
+ *
290
303
  * Returns a summary with the binding, the owner token (so the caller
291
304
  * CLI can print it once), upload + change counts, and any walker
292
305
  * warnings (oversized files / symlinks / invalid paths). Caller is
@@ -302,6 +315,15 @@ type InitOptions = {
302
315
  deviceLabel?: string;
303
316
  /** Org slug to scope the new binding to. Caller must already be a member. */
304
317
  org?: string;
318
+ /** Create the binding as this kind (the relay defaults to `'rig'`). */
319
+ kind?: "rig" | "space";
320
+ /**
321
+ * Create the binding and write the local config, but leave the initial
322
+ * upload to the daemon's first scan (`tapd start` pushes every file the
323
+ * relay doesn't know yet). For a brand-new folder that should be usable
324
+ * the moment its binding exists — a new space in the desktop app.
325
+ */
326
+ deferUpload?: boolean;
305
327
  /** Test seam: override fetch (used to drive the in-process relay). */
306
328
  fetch?: typeof fetch;
307
329
  };
@@ -316,6 +338,8 @@ type InitResult = {
316
338
  warnings: WalkResult["warnings"];
317
339
  /** Cursor written to state.local.db after the initial submit. */
318
340
  cursor: string;
341
+ /** True when the upload was left to the daemon's first scan (`deferUpload`). */
342
+ deferredUpload: boolean;
319
343
  };
320
344
  declare class AlreadyInitializedError extends Error {
321
345
  readonly path: string;
@@ -428,6 +452,11 @@ declare function revoke(opts: {
428
452
  * Materialization is atomic: download to `<file>.tap-tmp.<rand>` then
429
453
  * `rename` into place. Atomic on POSIX; on Windows, `fs.rename` falls
430
454
  * back to MoveFileEx-style replace.
455
+ *
456
+ * Files from other members are treated like downloads: never executable
457
+ * (the event's `executable` bit is ignored), quarantined on macOS so
458
+ * Gatekeeper checks them before they run, and never-sync paths (.git,
459
+ * agent/MCP config — core isNeverSyncPath) are not applied at all.
431
460
  */
432
461
 
433
462
  /** State-DB meta key — running count of conflicts surfaced by `tapd status`. */
@@ -557,8 +586,11 @@ type IntentAssignment = {
557
586
 
558
587
  type NotSyncedFile = {
559
588
  path: string;
560
- reason: "quota_exceeded" | "file_too_large";
561
- /** Hash of the refused bytes; absent for walker-level oversize skips. */
589
+ reason: "quota_exceeded" | "file_too_large" | "owner_only" | "protected";
590
+ /**
591
+ * Hash of the refused bytes; absent for walker-level oversize skips and
592
+ * for refused deletes/mkdirs/rmdirs.
593
+ */
562
594
  hash?: string;
563
595
  size?: number;
564
596
  /** The space's byte limit, for quota_exceeded. */
package/dist/index.js CHANGED
@@ -46,7 +46,7 @@ import {
46
46
  walk,
47
47
  writeBindingConfig,
48
48
  writeImportMount
49
- } from "./chunk-7RKYNS5V.js";
49
+ } from "./chunk-32K6ANXS.js";
50
50
  export {
51
51
  AlreadyInitializedError,
52
52
  AlreadyJoinedError,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rigxyz/tapd",
3
- "version": "0.6.5",
3
+ "version": "0.6.7",
4
4
  "description": "Local daemon for the hosted Tap relay — watches files, hashes content, uploads/downloads objects, applies remote changes. Pairs with @rigxyz/cli for shared-rig sync.",
5
5
  "license": "MIT",
6
6
  "author": "Dylan Bourgeois <dtsbourg@gmail.com>",