axgram 0.1.3 → 0.2.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.
package/README.md CHANGED
@@ -123,12 +123,17 @@ node dist/bin/axgram.js --help
123
123
 
124
124
  ## Releasing
125
125
 
126
- 1. Bump the version in `cli/package.json`.
127
- 2. Commit: `git commit -m "chore(cli): bump version to X.Y.Z"`.
128
- 3. Push a tag: `git tag cli-vX.Y.Z && git push origin cli-vX.Y.Z`.
129
- 4. CI (`cli-publish.yml`) runs typecheck → test → build → `npm publish` via OIDC Trusted Publishing.
126
+ The CLI is versioned in lock-step with the rest of Axgram from the repo-root
127
+ `/VERSION` file see ADR `docs/decisions/0007-unified-versioning.md`. Do **not**
128
+ hand-edit `cli/package.json`; the unified `v*` tag drives the release.
130
129
 
131
- No `NPM_TOKEN` is required. The workflow exchanges a GitHub OIDC token for short-lived npm credentials against the `axgram` Trusted Publisher registered at npmjs.com.
130
+ 1. `scripts/set-version.sh X.Y.Z` bumps `/VERSION` + every `package.json`.
131
+ 2. Commit (`chore(release): vX.Y.Z`), merge to `main`.
132
+ 3. `git tag vX.Y.Z && git push origin vX.Y.Z`.
133
+ 4. CI (`cli-publish.yml`) runs **only if `cli/` changed** since the previous `v*`
134
+ tag, then typecheck → test → build → `npm publish` via OIDC Trusted Publishing.
135
+
136
+ No `NPM_TOKEN` is required. The workflow exchanges a GitHub OIDC token for short-lived npm credentials against the `axgram` Trusted Publisher registered at npmjs.com. See `docs/ops/cloud-runbook.md` → "Cut a release" for the full stack release flow.
132
137
 
133
138
  ## License
134
139
 
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hookSessionStartCommand = hookSessionStartCommand;
4
+ exports.defaultProjectIsAccessible = defaultProjectIsAccessible;
4
5
  const project_resolver_1 = require("../lib/project-resolver");
5
6
  const supabase_client_1 = require("../lib/supabase-client");
6
7
  /**
@@ -28,6 +29,25 @@ async function hookSessionStartCommand(opts = {}, deps = {}) {
28
29
  ...(opts.cwd ? { cwd: opts.cwd } : {}),
29
30
  });
30
31
  if (resolved.projectId) {
32
+ const accessible = deps.projectIsAccessible
33
+ ? await deps.projectIsAccessible(resolved.projectId)
34
+ : await defaultProjectIsAccessible(resolved.projectId);
35
+ if (accessible === false) {
36
+ log([
37
+ `<axgram>`,
38
+ `The linked Axgram project (${resolved.projectId}, via ${resolved.source}) isn't reachable`,
39
+ `with your current login. You may be signed in to a different org/account than the one`,
40
+ `that owns it, or the project may have been removed. Ask the user one of:`,
41
+ ` - "Switch accounts? (axgram login)"`,
42
+ ` - "Re-link this repo to a project you can access? (axgram projects link)"`,
43
+ ` - "Create a new project and save memories there? (axgram projects create <name> && axgram projects link <id>)"`,
44
+ `Run \`axgram projects ls\` to see projects you can access.`,
45
+ `</axgram>`,
46
+ ].join("\n"));
47
+ return 0;
48
+ }
49
+ // accessible === true OR null (couldn't determine) → optimistic briefing.
50
+ // Fail-safe: a network/timeout/no-creds probe never blocks or cries wolf.
31
51
  log([
32
52
  `<axgram>`,
33
53
  `You are working in Axgram project ${resolved.projectId} (resolved via ${resolved.source}).`,
@@ -82,4 +102,27 @@ async function defaultPendingInvitationsCount() {
82
102
  return 0;
83
103
  return count ?? 0;
84
104
  }
105
+ const PROJECT_PROBE_TIMEOUT_MS = 1500;
106
+ async function defaultProjectIsAccessible(projectId, getSupabase = supabase_client_1.authenticatedSupabase) {
107
+ const probe = (async () => {
108
+ try {
109
+ const s = await getSupabase();
110
+ const { data, error } = await s
111
+ .from("projects")
112
+ .select("id")
113
+ .eq("id", projectId)
114
+ .maybeSingle();
115
+ if (error)
116
+ return null; // couldn't determine — fail safe
117
+ return data !== null; // true = reachable, false = authed but not visible
118
+ }
119
+ catch {
120
+ return null; // no creds / network error — fail safe
121
+ }
122
+ })();
123
+ const timeout = new Promise((res) => {
124
+ setTimeout(() => res(null), PROJECT_PROBE_TIMEOUT_MS).unref();
125
+ });
126
+ return Promise.race([probe, timeout]);
127
+ }
85
128
  //# sourceMappingURL=hook-session-start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook-session-start.js","sourceRoot":"","sources":["../../src/commands/hook-session-start.ts"],"names":[],"mappings":";;AA+BA,0DAsDC;AArFD,8DAA+D;AAC/D,4DAA+D;AAgB/D;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,uBAAuB,CAC3C,OAAgC,EAAE,EAClC,OAA6B,EAAE;IAE/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3E,uEAAuE;IACvE,mEAAmE;IACnE,MAAM,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,MAAM,IAAA,uCAAoB,EAAC;QAC1C,IAAI,EAAE,IAAI,CAAC,OAAO;QAClB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,GAAG,CACD;YACE,UAAU;YACV,qCAAqC,QAAQ,CAAC,SAAS,kBAAkB,QAAQ,CAAC,MAAM,IAAI;YAC5F,sGAAsG;YACtG,6FAA6F;YAC7F,WAAW;SACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,GAAG,CACD;YACE,UAAU;YACV,oBAAoB,QAAQ,CAAC,OAAO,yDAAyD;YAC7F,6BAA6B;YAC7B,0FAA0F;YAC1F,iHAAiH;YACjH,yEAAyE;YACzE,WAAW;SACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG,CACD;QACE,UAAU;QACV,uFAAuF;QACvF,oFAAoF;QACpF,oDAAoD;QACpD,WAAW;KACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,MAA2B,EAC3B,IAA0B;IAE1B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB;YACxC,CAAC,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE;YACtC,CAAC,CAAC,MAAM,8BAA8B,EAAE,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,CACJ,YAAY,KAAK,sBAAsB,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;gBAC/D,6FAA6F,CAChG,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,8BAA8B;IAC3C,MAAM,CAAC,GAAG,MAAM,IAAA,uCAAqB,GAAE,CAAC;IACxC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;SAC7B,IAAI,CAAC,aAAa,CAAC;SACnB,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC5C,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,KAAK,IAAI,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"hook-session-start.js","sourceRoot":"","sources":["../../src/commands/hook-session-start.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axgram",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "Axgram CLI — mine codebases, import conversation history, and run the auto-save hook for Claude Code.",
5
5
  "license": "MIT",
6
6
  "repository": {