@agent-native/core 0.2.1 → 0.2.7-dev.712fefc

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 (109) hide show
  1. package/README.md +122 -0
  2. package/dist/adapters/firestore/adapter.d.ts +47 -0
  3. package/dist/adapters/firestore/adapter.d.ts.map +1 -0
  4. package/dist/adapters/firestore/adapter.js +45 -0
  5. package/dist/adapters/firestore/adapter.js.map +1 -0
  6. package/dist/adapters/firestore/index.d.ts +3 -3
  7. package/dist/adapters/firestore/index.d.ts.map +1 -1
  8. package/dist/adapters/firestore/index.js +2 -3
  9. package/dist/adapters/firestore/index.js.map +1 -1
  10. package/dist/adapters/neon/adapter.d.ts +28 -0
  11. package/dist/adapters/neon/adapter.d.ts.map +1 -0
  12. package/dist/adapters/neon/adapter.js +119 -0
  13. package/dist/adapters/neon/adapter.js.map +1 -0
  14. package/dist/adapters/neon/index.d.ts +3 -0
  15. package/dist/adapters/neon/index.d.ts.map +1 -0
  16. package/dist/adapters/neon/index.js +3 -0
  17. package/dist/adapters/neon/index.js.map +1 -0
  18. package/dist/adapters/supabase/adapter.d.ts +42 -0
  19. package/dist/adapters/supabase/adapter.d.ts.map +1 -0
  20. package/dist/adapters/supabase/adapter.js +126 -0
  21. package/dist/adapters/supabase/adapter.js.map +1 -0
  22. package/dist/adapters/supabase/index.d.ts +3 -0
  23. package/dist/adapters/supabase/index.d.ts.map +1 -0
  24. package/dist/adapters/supabase/index.js +3 -0
  25. package/dist/adapters/supabase/index.js.map +1 -0
  26. package/dist/adapters/{firestore → sync}/config.d.ts +1 -1
  27. package/dist/adapters/sync/config.d.ts.map +1 -0
  28. package/dist/adapters/{firestore → sync}/config.js +1 -1
  29. package/dist/adapters/sync/config.js.map +1 -0
  30. package/dist/adapters/{firestore/sync.d.ts → sync/file-sync.d.ts} +6 -37
  31. package/dist/adapters/sync/file-sync.d.ts.map +1 -0
  32. package/dist/adapters/{firestore/sync.js → sync/file-sync.js} +45 -59
  33. package/dist/adapters/sync/file-sync.js.map +1 -0
  34. package/dist/adapters/sync/index.d.ts +5 -0
  35. package/dist/adapters/sync/index.d.ts.map +1 -0
  36. package/dist/adapters/sync/index.js +4 -0
  37. package/dist/adapters/sync/index.js.map +1 -0
  38. package/dist/adapters/sync/merge.d.ts.map +1 -0
  39. package/dist/adapters/sync/merge.js.map +1 -0
  40. package/dist/adapters/sync/types.d.ts +28 -0
  41. package/dist/adapters/sync/types.d.ts.map +1 -0
  42. package/dist/adapters/sync/types.js +2 -0
  43. package/dist/adapters/sync/types.js.map +1 -0
  44. package/dist/cli/create.d.ts.map +1 -1
  45. package/dist/cli/create.js +41 -3
  46. package/dist/cli/create.js.map +1 -1
  47. package/dist/cli/index.js +15 -10
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/client/components/ApiKeySettings.d.ts +12 -0
  50. package/dist/client/components/ApiKeySettings.d.ts.map +1 -0
  51. package/dist/client/components/ApiKeySettings.js +203 -0
  52. package/dist/client/components/ApiKeySettings.js.map +1 -0
  53. package/dist/client/components/MissingKeyCard.d.ts +7 -0
  54. package/dist/client/components/MissingKeyCard.d.ts.map +1 -0
  55. package/dist/client/components/MissingKeyCard.js +27 -0
  56. package/dist/client/components/MissingKeyCard.js.map +1 -0
  57. package/dist/client/index.d.ts +1 -0
  58. package/dist/client/index.d.ts.map +1 -1
  59. package/dist/client/index.js +1 -0
  60. package/dist/client/index.js.map +1 -1
  61. package/dist/client/use-file-watcher.d.ts.map +1 -1
  62. package/dist/client/use-file-watcher.js +24 -14
  63. package/dist/client/use-file-watcher.js.map +1 -1
  64. package/dist/index.browser.d.ts +1 -1
  65. package/dist/index.browser.d.ts.map +1 -1
  66. package/dist/index.browser.js +1 -1
  67. package/dist/index.browser.js.map +1 -1
  68. package/dist/index.d.ts +1 -1
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +1 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/scripts/runner.js +1 -1
  73. package/dist/scripts/runner.js.map +1 -1
  74. package/dist/server/create-server.d.ts +11 -0
  75. package/dist/server/create-server.d.ts.map +1 -1
  76. package/dist/server/create-server.js +102 -0
  77. package/dist/server/create-server.js.map +1 -1
  78. package/dist/server/index.d.ts +2 -1
  79. package/dist/server/index.d.ts.map +1 -1
  80. package/dist/server/index.js +1 -0
  81. package/dist/server/index.js.map +1 -1
  82. package/dist/server/missing-key.d.ts +17 -0
  83. package/dist/server/missing-key.d.ts.map +1 -0
  84. package/dist/server/missing-key.js +17 -0
  85. package/dist/server/missing-key.js.map +1 -0
  86. package/dist/shared/agent-env.d.ts +23 -0
  87. package/dist/shared/agent-env.d.ts.map +1 -0
  88. package/dist/shared/agent-env.js +36 -0
  89. package/dist/shared/agent-env.js.map +1 -0
  90. package/dist/shared/index.d.ts +1 -0
  91. package/dist/shared/index.d.ts.map +1 -1
  92. package/dist/shared/index.js +1 -0
  93. package/dist/shared/index.js.map +1 -1
  94. package/dist/vite/client.d.ts.map +1 -1
  95. package/dist/vite/client.js +31 -0
  96. package/dist/vite/client.js.map +1 -1
  97. package/package.json +27 -5
  98. package/src/templates/default/.claude/settings.json +68 -0
  99. package/src/templates/default/AGENTS.md +4 -0
  100. package/src/templates/default/data/.gitkeep +0 -0
  101. package/src/templates/default/learnings.md +0 -0
  102. package/dist/adapters/firestore/config.d.ts.map +0 -1
  103. package/dist/adapters/firestore/config.js.map +0 -1
  104. package/dist/adapters/firestore/merge.d.ts.map +0 -1
  105. package/dist/adapters/firestore/merge.js.map +0 -1
  106. package/dist/adapters/firestore/sync.d.ts.map +0 -1
  107. package/dist/adapters/firestore/sync.js.map +0 -1
  108. /package/dist/adapters/{firestore → sync}/merge.d.ts +0 -0
  109. /package/dist/adapters/{firestore → sync}/merge.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/adapters/sync/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,uBAAuB,EAAE,MAAM,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAiB9D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAiB5E;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -41,7 +41,7 @@ export function shouldSyncFile(filePath, patterns) {
41
41
  return true;
42
42
  }
43
43
  /**
44
- * Generate a deterministic Firestore doc ID from a file path.
44
+ * Generate a deterministic doc ID from a file path.
45
45
  * Prefixed with the app ID, path separators replaced with `__`.
46
46
  */
47
47
  export function getDocId(appId, filePath) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/adapters/sync/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOtC;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,UAAmB;IAChD,MAAM,QAAQ,GACZ,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;IACxE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO;YACL,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBACtD,CAAC,CAAC,MAAM,CAAC,gBAAgB;gBACzB,CAAC,CAAC,EAAE;YACN,uBAAuB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;gBACpE,CAAC,CAAC,MAAM,CAAC,uBAAuB;gBAChC,CAAC,CAAC,EAAE;SACP,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,QAAkB;IACjE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7D,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CACtC,CAAC;IACF,IAAI,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IAEnC,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAC/C,CAAC;IACF,IAAI,eAAe;QAAE,OAAO,KAAK,CAAC;IAElC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,QAAgB;IACtD,OAAO,GAAG,KAAK,KAAK,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;AACtD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter } from "events";
2
+ import type { FileSyncAdapter } from "./types.js";
2
3
  export interface FileSyncOptions {
3
4
  /** Unique app identifier (e.g. "content-workspace") */
4
5
  appId: string;
@@ -6,42 +7,11 @@ export interface FileSyncOptions {
6
7
  ownerId: string;
7
8
  /** Root directory for synced content */
8
9
  contentRoot: string;
9
- /** Firestore collection reference for app files */
10
- getFileCollection: () => FirestoreCollection;
10
+ /** Database adapter for file sync operations */
11
+ adapter: FileSyncAdapter;
11
12
  /** Path to sync-config.json. Default: <contentRoot>/sync-config.json */
12
13
  syncConfigPath?: string;
13
14
  }
14
- /** Minimal Firestore collection interface (avoids hard firebase-admin dependency) */
15
- export interface FirestoreCollection {
16
- doc(id: string): FirestoreDocRef;
17
- where(field: string, op: string, value: any): FirestoreQuery;
18
- }
19
- export interface FirestoreDocRef {
20
- get(): Promise<FirestoreDocSnapshot>;
21
- set(data: any, options?: {
22
- merge?: boolean;
23
- }): Promise<any>;
24
- delete(): Promise<any>;
25
- collection(name: string): FirestoreCollection;
26
- }
27
- export interface FirestoreQuery {
28
- where(field: string, op: string, value: any): FirestoreQuery;
29
- get(): Promise<FirestoreQuerySnapshot>;
30
- onSnapshot(onNext: (snapshot: FirestoreQuerySnapshot) => void, onError: (error: any) => void): () => void;
31
- }
32
- export interface FirestoreDocSnapshot {
33
- exists: boolean;
34
- id: string;
35
- data(): any;
36
- }
37
- export interface FirestoreQuerySnapshot {
38
- docs: FirestoreDocSnapshot[];
39
- size: number;
40
- docChanges(): Array<{
41
- type: "added" | "modified" | "removed";
42
- doc: FirestoreDocSnapshot;
43
- }>;
44
- }
45
15
  export type SyncEvent = {
46
16
  type: "conflict-resolved";
47
17
  path: string;
@@ -68,7 +38,7 @@ export declare class FileSync {
68
38
  constructor(options: FileSyncOptions);
69
39
  /**
70
40
  * Initialize the shared sync channel.
71
- * Runs startup sync, starts Firestore listener, and starts file watcher.
41
+ * Runs startup sync, starts remote listener, and starts file watcher.
72
42
  */
73
43
  initFileSync(): Promise<void>;
74
44
  /**
@@ -82,10 +52,9 @@ export declare class FileSync {
82
52
  private readLocalFile;
83
53
  private writeSyncedFile;
84
54
  private docId;
85
- private collection;
86
55
  private resolveConflict;
87
56
  private initStartupSync;
88
- private startFirestoreListener;
57
+ private startRemoteListener;
89
58
  private startFileWatcher;
90
59
  }
91
- //# sourceMappingURL=sync.d.ts.map
60
+ //# sourceMappingURL=file-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-sync.d.ts","sourceRoot":"","sources":["../../../src/adapters/sync/file-sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,OAAO,EAAE,eAAe,CAAC;IACzB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,SAAS,GACjB;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;CACvD,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAQnE,qBAAa,QAAQ;IAUP,OAAO,CAAC,OAAO;IAT3B,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,UAAU,CAA+C;IAEjE,QAAQ,CAAC,UAAU,wBAAsB;gBAErB,OAAO,EAAE,eAAe;IAI5C;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBnC;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrD,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,eAAe;YA4DT,eAAe;IAiF7B,OAAO,CAAC,mBAAmB;IAgE3B,OAAO,CAAC,gBAAgB;CAsEzB"}
@@ -20,10 +20,10 @@ export class FileSync {
20
20
  constructor(options) {
21
21
  this.options = options;
22
22
  }
23
- // ── Public API ──────────────────────────────────────────────────────
23
+ // -- Public API -----------------------------------------------------------
24
24
  /**
25
25
  * Initialize the shared sync channel.
26
- * Runs startup sync, starts Firestore listener, and starts file watcher.
26
+ * Runs startup sync, starts remote listener, and starts file watcher.
27
27
  */
28
28
  async initFileSync() {
29
29
  if (this.sharedSyncInitialized)
@@ -38,7 +38,7 @@ export class FileSync {
38
38
  console.log(`[file-sync:shared] Initializing with ${patterns.length} pattern(s)`);
39
39
  this.startPurgeTimer();
40
40
  await this.initStartupSync(patterns, this.options.ownerId, "shared");
41
- this.startFirestoreListener(patterns, this.options.ownerId, "shared");
41
+ this.startRemoteListener(patterns, this.options.ownerId, "shared");
42
42
  this.startFileWatcher(patterns, this.options.ownerId, "shared");
43
43
  }
44
44
  /**
@@ -56,10 +56,10 @@ export class FileSync {
56
56
  }
57
57
  console.log(`[file-sync:private] Initializing private sync for user ${userUid.slice(0, 8)}...`);
58
58
  await this.initStartupSync(patterns, userUid, "private");
59
- this.startFirestoreListener(patterns, userUid, "private");
59
+ this.startRemoteListener(patterns, userUid, "private");
60
60
  this.startFileWatcher(patterns, userUid, "private");
61
61
  }
62
- // ── Private helpers ─────────────────────────────────────────────────
62
+ // -- Private helpers ------------------------------------------------------
63
63
  emitSyncEvent(event) {
64
64
  this.syncEvents.emit("sync", event);
65
65
  }
@@ -106,10 +106,7 @@ export class FileSync {
106
106
  docId(filePath) {
107
107
  return getDocId(this.options.appId, filePath);
108
108
  }
109
- collection() {
110
- return this.options.getFileCollection();
111
- }
112
- // ── Conflict resolution ─────────────────────────────────────────────
109
+ // -- Conflict resolution --------------------------------------------------
113
110
  resolveConflict(filePath, absPath, localContent, remoteContent, ownerId) {
114
111
  const base = this.lastSyncedContent.get(filePath);
115
112
  if (base !== undefined) {
@@ -117,15 +114,14 @@ export class FileSync {
117
114
  if (result.success && result.merged !== null) {
118
115
  this.writeSyncedFile(filePath, absPath, result.merged);
119
116
  const now = Date.now();
120
- this.collection()
121
- .doc(this.docId(filePath))
122
- .set({
117
+ this.options.adapter
118
+ .set(this.docId(filePath), {
123
119
  path: filePath,
124
120
  content: result.merged,
125
121
  app: this.options.appId,
126
122
  ownerId,
127
123
  lastUpdated: now,
128
- }, { merge: true })
124
+ })
129
125
  .then(() => this.markRecent(this.recentlyPushed, filePath))
130
126
  .catch((err) => console.error(`[file-sync] Failed to push merged ${filePath}:`, err));
131
127
  this.emitSyncEvent({
@@ -137,7 +133,7 @@ export class FileSync {
137
133
  return;
138
134
  }
139
135
  }
140
- // Auto-merge failed or no base write .conflict sidecar
136
+ // Auto-merge failed or no base -- write .conflict sidecar
141
137
  const conflictPath = absPath + ".conflict";
142
138
  fs.writeFileSync(conflictPath, remoteContent, "utf-8");
143
139
  console.log(`[file-sync] conflict in ${filePath} - wrote ${filePath}.conflict`);
@@ -153,68 +149,63 @@ export class FileSync {
153
149
  remoteSnippet: remoteContent.slice(0, 500),
154
150
  });
155
151
  }
156
- // ── Startup sync ────────────────────────────────────────────────────
152
+ // -- Startup sync ---------------------------------------------------------
157
153
  async initStartupSync(patterns, ownerId, label) {
158
154
  if (patterns.length === 0)
159
155
  return;
160
156
  console.log(`[file-sync:${label}] Running full startup sync...`);
161
- const baseQuery = this.collection()
162
- .where("app", "==", this.options.appId)
163
- .where("ownerId", "==", ownerId);
164
- const snapshot = await baseQuery.get();
157
+ const rows = await this.options.adapter.query(this.options.appId, ownerId);
165
158
  const docsByPath = new Map();
166
159
  const orphanedDocIds = [];
167
- for (const doc of snapshot.docs) {
168
- const filePath = doc.data().path;
160
+ for (const row of rows) {
161
+ const filePath = row.data.path;
169
162
  const canonicalId = this.docId(filePath);
170
- if (doc.id !== canonicalId) {
171
- orphanedDocIds.push(doc.id);
163
+ if (row.id !== canonicalId) {
164
+ orphanedDocIds.push(row.id);
172
165
  continue;
173
166
  }
174
- docsByPath.set(filePath, doc);
167
+ docsByPath.set(filePath, row);
175
168
  }
176
169
  if (orphanedDocIds.length > 0) {
177
170
  console.log(`[file-sync:${label}] Cleaning up ${orphanedDocIds.length} orphaned doc(s)...`);
178
171
  for (const id of orphanedDocIds) {
179
- await this.collection().doc(id).delete().catch(() => { });
172
+ await this.options.adapter.delete(id).catch(() => { });
180
173
  }
181
174
  }
182
175
  const projectRoot = path.resolve(this.options.contentRoot, "..");
183
176
  let syncedCount = 0;
184
- for (const [filePath, doc] of docsByPath) {
185
- const data = doc.data();
177
+ for (const [filePath, row] of docsByPath) {
178
+ const data = row.data;
186
179
  if (!shouldSyncFile(filePath, patterns))
187
180
  continue;
188
181
  const absPath = path.resolve(projectRoot, filePath);
189
- const firestoreContent = data.content ?? "";
182
+ const remoteContent = data.content ?? "";
190
183
  const localContent = this.readLocalFile(absPath);
191
184
  if (localContent === null) {
192
- this.writeSyncedFile(filePath, absPath, firestoreContent);
185
+ this.writeSyncedFile(filePath, absPath, remoteContent);
193
186
  syncedCount++;
194
187
  }
195
- else if (localContent !== firestoreContent) {
196
- const firestoreMs = data.lastUpdated ?? 0;
188
+ else if (localContent !== remoteContent) {
189
+ const remoteMs = data.lastUpdated ?? 0;
197
190
  let localMs = 0;
198
191
  try {
199
192
  localMs = fs.statSync(absPath).mtimeMs;
200
193
  }
201
194
  catch { }
202
- if (firestoreMs > localMs) {
203
- this.writeSyncedFile(filePath, absPath, firestoreContent);
195
+ if (remoteMs > localMs) {
196
+ this.writeSyncedFile(filePath, absPath, remoteContent);
204
197
  syncedCount++;
205
198
  }
206
199
  else {
207
200
  const now = Date.now();
208
- await this.collection()
209
- .doc(this.docId(filePath))
210
- .set({
201
+ await this.options.adapter.set(this.docId(filePath), {
211
202
  path: filePath,
212
203
  content: localContent,
213
204
  app: this.options.appId,
214
205
  ownerId,
215
206
  lastUpdated: now,
216
207
  createdAt: data.createdAt ?? now,
217
- }, { merge: true });
208
+ });
218
209
  this.lastSyncedContent.set(filePath, localContent);
219
210
  this.markRecent(this.recentlyPushed, filePath);
220
211
  syncedCount++;
@@ -226,23 +217,20 @@ export class FileSync {
226
217
  }
227
218
  console.log(`[file-sync:${label}] Startup sync complete - ${syncedCount} file(s) synced`);
228
219
  }
229
- // ── Firestore -> disk listener ──────────────────────────────────────
230
- startFirestoreListener(patterns, ownerId, label) {
220
+ // -- Remote -> disk listener ----------------------------------------------
221
+ startRemoteListener(patterns, ownerId, label) {
231
222
  if (patterns.length === 0)
232
223
  return;
233
- console.log(`[file-sync:${label}] Listening for Firestore changes...`);
224
+ console.log(`[file-sync:${label}] Listening for remote changes...`);
234
225
  const projectRoot = path.resolve(this.options.contentRoot, "..");
235
- this.collection()
236
- .where("app", "==", this.options.appId)
237
- .where("ownerId", "==", ownerId)
238
- .onSnapshot((snapshot) => {
239
- for (const change of snapshot.docChanges()) {
240
- const data = change.doc.data();
226
+ this.options.adapter.subscribe(this.options.appId, ownerId, (changes) => {
227
+ for (const change of changes) {
228
+ const data = change.data;
241
229
  const filePath = data.path;
242
230
  if (!shouldSyncFile(filePath, patterns))
243
231
  continue;
244
232
  if (change.type === "added" || change.type === "modified") {
245
- if (change.doc.id !== this.docId(filePath))
233
+ if (change.id !== this.docId(filePath))
246
234
  continue;
247
235
  if (this.wasRecent(this.recentlyPushed, filePath))
248
236
  continue;
@@ -274,10 +262,10 @@ export class FileSync {
274
262
  }
275
263
  }
276
264
  }, (err) => {
277
- console.error(`[file-sync:${label}] Firestore listener error:`, err);
265
+ console.error(`[file-sync:${label}] Remote listener error:`, err);
278
266
  });
279
267
  }
280
- // ── Disk -> Firestore watcher ───────────────────────────────────────
268
+ // -- Disk -> remote watcher -----------------------------------------------
281
269
  startFileWatcher(patterns, ownerId, label) {
282
270
  if (patterns.length === 0)
283
271
  return;
@@ -295,9 +283,8 @@ export class FileSync {
295
283
  const content = this.readLocalFile(absPath);
296
284
  if (content === null)
297
285
  return;
298
- const docRef = this.collection().doc(this.docId(relPath));
299
- const existing = await docRef.get();
300
- if (existing.exists && existing.data()?.content === content)
286
+ const existing = await this.options.adapter.get(this.docId(relPath));
287
+ if (existing && existing.data?.content === content)
301
288
  return;
302
289
  const now = Date.now();
303
290
  const payload = {
@@ -307,11 +294,11 @@ export class FileSync {
307
294
  ownerId,
308
295
  lastUpdated: now,
309
296
  };
310
- if (!existing.exists) {
297
+ if (!existing) {
311
298
  payload.createdAt = now;
312
299
  }
313
- docRef
314
- .set(payload, { merge: true })
300
+ this.options.adapter
301
+ .set(this.docId(relPath), payload)
315
302
  .then(() => {
316
303
  this.lastSyncedContent.set(relPath, content);
317
304
  this.markRecent(this.recentlyPushed, relPath);
@@ -323,9 +310,8 @@ export class FileSync {
323
310
  const relPath = path.relative(projectRoot, absPath);
324
311
  if (!shouldSyncFile(relPath, patterns))
325
312
  return;
326
- this.collection()
327
- .doc(this.docId(relPath))
328
- .delete()
313
+ this.options.adapter
314
+ .delete(this.docId(relPath))
329
315
  .then(() => {
330
316
  this.lastSyncedContent.delete(relPath);
331
317
  console.log(`[file-sync:${label}] -> deleted ${relPath}`);
@@ -337,4 +323,4 @@ export class FileSync {
337
323
  watcher.on("unlink", handleDelete);
338
324
  }
339
325
  }
340
- //# sourceMappingURL=sync.js.map
326
+ //# sourceMappingURL=file-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-sync.js","sourceRoot":"","sources":["../../../src/adapters/sync/file-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { FileSync, type FileSyncOptions, type SyncEvent } from "./file-sync.js";
2
+ export { threeWayMerge, type MergeResult } from "./merge.js";
3
+ export { loadSyncConfig, shouldSyncFile, getDocId, type SyncConfig } from "./config.js";
4
+ export type { FileSyncAdapter, FileRecord, FileChange, Unsubscribe } from "./types.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/sync/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACxF,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { FileSync } from "./file-sync.js";
2
+ export { threeWayMerge } from "./merge.js";
3
+ export { loadSyncConfig, shouldSyncFile, getDocId } from "./config.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/sync/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwC,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAmB,MAAM,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/adapters/sync/merge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,WAAW,CAiCb"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/adapters/sync/merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface FileRecord {
2
+ path: string;
3
+ content: string;
4
+ app: string;
5
+ ownerId: string;
6
+ lastUpdated: number;
7
+ createdAt?: number;
8
+ }
9
+ export interface FileChange {
10
+ type: "added" | "modified" | "removed";
11
+ id: string;
12
+ data: FileRecord;
13
+ }
14
+ export type Unsubscribe = () => void;
15
+ export interface FileSyncAdapter {
16
+ query(appId: string, ownerId: string): Promise<{
17
+ id: string;
18
+ data: FileRecord;
19
+ }[]>;
20
+ get(id: string): Promise<{
21
+ id: string;
22
+ data: FileRecord;
23
+ } | null>;
24
+ set(id: string, record: Partial<FileRecord>): Promise<void>;
25
+ delete(id: string): Promise<void>;
26
+ subscribe(appId: string, ownerId: string, onChange: (changes: FileChange[]) => void, onError: (error: any) => void): Unsubscribe;
27
+ }
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/sync/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC,CAAC;IACnF,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAClE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,SAAS,CACP,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,EACzC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAC5B,WAAW,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/sync/types.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAmF7C"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAuG7C"}
@@ -63,6 +63,23 @@ export function createApp(name) {
63
63
  if (fs.existsSync(gitignoreSrc)) {
64
64
  fs.renameSync(gitignoreSrc, gitignoreDst);
65
65
  }
66
+ // Ensure .claude/skills -> .agents/skills symlink exists for Claude Code discovery.
67
+ // The template includes this symlink tracked in git, but recreate it as a safety net
68
+ // (e.g. if git didn't preserve the symlink on Windows).
69
+ const agentsSkills = path.join(targetDir, ".agents", "skills");
70
+ const claudeDir = path.join(targetDir, ".claude");
71
+ const claudeSkills = path.join(claudeDir, "skills");
72
+ if (fs.existsSync(agentsSkills) && !fs.existsSync(claudeSkills)) {
73
+ fs.mkdirSync(claudeDir, { recursive: true });
74
+ const rel = path.relative(claudeDir, agentsSkills);
75
+ const type = process.platform === "win32" ? "junction" : "dir";
76
+ try {
77
+ fs.symlinkSync(rel, claudeSkills, type);
78
+ }
79
+ catch {
80
+ copyDir(agentsSkills, claudeSkills);
81
+ }
82
+ }
66
83
  console.log(`\nDone! Created ${name} at ${targetDir}\n`);
67
84
  console.log(`Next steps:`);
68
85
  console.log(` cd ${name}`);
@@ -70,14 +87,35 @@ export function createApp(name) {
70
87
  console.log(` pnpm dev # Start dev server at http://localhost:8080`);
71
88
  console.log(` pnpm build # Build for production`);
72
89
  console.log(` pnpm start # Start production server`);
90
+ console.log(``);
91
+ console.log(`Your app includes agent skills in .agents/skills/.`);
92
+ console.log(`These teach the AI agent how to work within the framework's architecture.`);
73
93
  }
74
- function copyDir(src, dest) {
94
+ function copyDir(src, dest, root) {
95
+ const resolvedRoot = root ?? path.resolve(src);
75
96
  fs.mkdirSync(dest, { recursive: true });
76
97
  for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
77
98
  const srcPath = path.join(src, entry.name);
78
99
  const destPath = path.join(dest, entry.name);
79
- if (entry.isDirectory()) {
80
- copyDir(srcPath, destPath);
100
+ if (entry.isSymbolicLink()) {
101
+ const target = fs.readlinkSync(srcPath);
102
+ // Resolve one level (path math only, no disk follow) to check
103
+ // whether the symlink stays inside the template tree.
104
+ const resolvedTarget = path.resolve(path.dirname(srcPath), target);
105
+ if (resolvedTarget.startsWith(resolvedRoot)) {
106
+ // Internal symlink (e.g. .claude/skills -> ../.agents/skills) — preserve it
107
+ fs.symlinkSync(target, destPath);
108
+ }
109
+ else if (fs.statSync(srcPath).isDirectory()) {
110
+ // External symlink to directory — dereference and copy contents
111
+ copyDir(srcPath, destPath, resolvedRoot);
112
+ }
113
+ else {
114
+ fs.copyFileSync(srcPath, destPath);
115
+ }
116
+ }
117
+ else if (entry.isDirectory()) {
118
+ copyDir(srcPath, destPath, resolvedRoot);
81
119
  }
82
120
  else {
83
121
  fs.copyFileSync(srcPath, destPath);
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -2,8 +2,19 @@
2
2
  import { execSync, spawn } from "child_process";
3
3
  import path from "path";
4
4
  import fs from "fs";
5
+ import { fileURLToPath } from "url";
6
+ // Resolve version once at module scope — used by both --version and --help
7
+ let _version = "unknown";
8
+ try {
9
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
10
+ // dist/cli/index.js → ../../package.json
11
+ const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, "../../package.json"), "utf-8"));
12
+ _version = pkg.version;
13
+ }
14
+ catch { }
5
15
  const command = process.argv[2];
6
- const args = process.argv.slice(3);
16
+ // Filter out bare "--" separators that pnpm inserts between its args and script args
17
+ const args = process.argv.slice(3).filter((a) => a !== "--");
7
18
  function findViteBin() {
8
19
  // Look for vite in node_modules/.bin
9
20
  const localVite = path.resolve("node_modules/.bin/vite");
@@ -29,6 +40,7 @@ function run(cmd, cmdArgs, opts) {
29
40
  switch (command) {
30
41
  case "dev": {
31
42
  // Like `next dev` — runs Vite dev server with express plugin
43
+ // Supports --base <path> for mounting under a prefix (e.g. agent-native dev --base /app/)
32
44
  const vite = findViteBin();
33
45
  run(vite, args);
34
46
  break;
@@ -77,20 +89,13 @@ switch (command) {
77
89
  }
78
90
  case "--version":
79
91
  case "-v": {
80
- const pkgPath = path.resolve(path.dirname(new URL(import.meta.url).pathname), "../../package.json");
81
- try {
82
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
83
- console.log(pkg.version);
84
- }
85
- catch {
86
- console.log("unknown");
87
- }
92
+ console.log(_version);
88
93
  break;
89
94
  }
90
95
  case "--help":
91
96
  case "-h":
92
97
  case undefined:
93
- console.log(`agent-native v0.2.0
98
+ console.log(`agent-native v${_version}
94
99
 
95
100
  Usage:
96
101
  agent-native dev Start development server
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ interface ApiKeySettingsProps {
2
+ /** Path to the settings page (used for linking). Default: "/settings" */
3
+ settingsPath?: string;
4
+ }
5
+ /**
6
+ * Reusable component that shows the status of configured API keys
7
+ * and lets users enter missing ones. Fetches from /api/env-status
8
+ * and saves via POST /api/env-vars.
9
+ */
10
+ export declare function ApiKeySettings({ settingsPath: _settingsPath }: ApiKeySettingsProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=ApiKeySettings.d.ts.map