@stigmer/react 0.1.0 → 0.1.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stigmer/react",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "React provider and client hook for the Stigmer platform SDK",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -35,7 +35,7 @@
35
35
  }
36
36
  },
37
37
  "dependencies": {
38
- "@stigmer/theme": "0.1.0",
38
+ "@stigmer/theme": "0.1.2",
39
39
  "react-markdown": "^10.1.0",
40
40
  "remark-gfm": "^4.0.1",
41
41
  "yaml": "^2.8.2"
@@ -43,8 +43,8 @@
43
43
  "peerDependencies": {
44
44
  "@base-ui/react": "^1.0.0",
45
45
  "@bufbuild/protobuf": "^2.0.0",
46
- "@stigmer/protos": "0.1.0",
47
- "@stigmer/sdk": "0.1.0",
46
+ "@stigmer/protos": "0.1.2",
47
+ "@stigmer/sdk": "0.1.2",
48
48
  "lucide-react": ">=0.400.0",
49
49
  "react": "^19.0.0",
50
50
  "react-dom": "^19.0.0"
@@ -34,6 +34,7 @@ describe("useLaunchLocalRunner", () => {
34
34
  const { result } = renderHook(() => useLaunchLocalRunner({ openUrl }), { wrapper: makeWrapper(client) });
35
35
  expect(result.current.isLaunching).toBe(false);
36
36
  expect(result.current.error).toBeNull();
37
+ expect(result.current.lastLaunchResult).toBeNull();
37
38
  let launchResult;
38
39
  await act(async () => {
39
40
  launchResult = await result.current.launch({ org: ORG });
@@ -45,6 +46,7 @@ describe("useLaunchLocalRunner", () => {
45
46
  expect(launchResult.expiresAt).toBeInstanceOf(Date);
46
47
  expect(result.current.isLaunching).toBe(false);
47
48
  expect(result.current.error).toBeNull();
49
+ expect(result.current.lastLaunchResult).toEqual(launchResult);
48
50
  });
49
51
  it("URL-encodes tokens with special characters", async () => {
50
52
  const response = create(CreateLaunchTokenResponseSchema, {
@@ -122,6 +124,22 @@ describe("useLaunchLocalRunner", () => {
122
124
  });
123
125
  expect(result.current.error).toBeNull();
124
126
  });
127
+ it("clearError also resets lastLaunchResult", async () => {
128
+ const response = create(CreateLaunchTokenResponseSchema, {
129
+ token: "tok_clear",
130
+ });
131
+ createLaunchToken.mockResolvedValueOnce(response);
132
+ const openUrl = vi.fn();
133
+ const { result } = renderHook(() => useLaunchLocalRunner({ openUrl }), { wrapper: makeWrapper(client) });
134
+ await act(async () => {
135
+ await result.current.launch({ org: ORG });
136
+ });
137
+ expect(result.current.lastLaunchResult).not.toBeNull();
138
+ act(() => {
139
+ result.current.clearError();
140
+ });
141
+ expect(result.current.lastLaunchResult).toBeNull();
142
+ });
125
143
  it("resets previous error on a new successful launch", async () => {
126
144
  createLaunchToken.mockRejectedValueOnce(new Error("first fail"));
127
145
  const openUrl = vi.fn();
@@ -1 +1 @@
1
- {"version":3,"file":"useLaunchLocalRunner.test.js","sourceRoot":"","sources":["../../../src/runner/__tests__/useLaunchLocalRunner.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLaunchLocalRunner.test.js","sourceRoot":"","sources":["../../../src/runner/__tests__/useLaunchLocalRunner.test.tsx"],"names":[],"mappings":"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"}
@@ -40,9 +40,18 @@ export interface UseLaunchLocalRunnerReturn {
40
40
  }) => Promise<LaunchLocalRunnerResult>;
41
41
  /** `true` while the token creation and URL dispatch are in flight. */
42
42
  readonly isLaunching: boolean;
43
+ /**
44
+ * Result from the most recent successful launch dispatch, or `null`
45
+ * when no launch has been dispatched (or after {@link clearError}).
46
+ *
47
+ * Consumers can use `lastLaunchResult.expiresAt` to implement
48
+ * timeout-based detection: if no runner appears before the token
49
+ * expires, the desktop app likely did not receive the deep link.
50
+ */
51
+ readonly lastLaunchResult: LaunchLocalRunnerResult | null;
43
52
  /** Error from the last failed launch attempt, or `null` when healthy. */
44
53
  readonly error: Error | null;
45
- /** Reset `error` to `null`. */
54
+ /** Reset `error` and `lastLaunchResult` to `null`. */
46
55
  readonly clearError: () => void;
47
56
  }
48
57
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"useLaunchLocalRunner.d.ts","sourceRoot":"","sources":["../../src/runner/useLaunchLocalRunner.ts"],"names":[],"mappings":"AAeA,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,sFAAsF;AACtF,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC;CACtC;AAED,oDAAoD;AACpD,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC9E,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,2BAA2B,GACpC,0BAA0B,CAsC5B"}
1
+ {"version":3,"file":"useLaunchLocalRunner.d.ts","sourceRoot":"","sources":["../../src/runner/useLaunchLocalRunner.ts"],"names":[],"mappings":"AAeA,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,sFAAsF;AACtF,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC;CACtC;AAED,oDAAoD;AACpD,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC9E,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC1D,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,2BAA2B,GACpC,0BAA0B,CA8C5B"}
@@ -48,11 +48,16 @@ export function useLaunchLocalRunner(options) {
48
48
  const stigmer = useStigmer();
49
49
  const [isLaunching, setIsLaunching] = useState(false);
50
50
  const [error, setError] = useState(null);
51
+ const [lastLaunchResult, setLastLaunchResult] = useState(null);
51
52
  const openUrl = options?.openUrl ?? defaultOpenUrl;
52
- const clearError = useCallback(() => setError(null), []);
53
+ const clearError = useCallback(() => {
54
+ setError(null);
55
+ setLastLaunchResult(null);
56
+ }, []);
53
57
  const launch = useCallback(async (input) => {
54
58
  setIsLaunching(true);
55
59
  setError(null);
60
+ setLastLaunchResult(null);
56
61
  try {
57
62
  const response = await stigmer.runner.createLaunchToken(create(CreateLaunchTokenRequestSchema, { org: input.org }));
58
63
  const url = `${LAUNCH_RUNNER_SCHEME}?token=${encodeURIComponent(response.token)}`;
@@ -60,7 +65,9 @@ export function useLaunchLocalRunner(options) {
60
65
  ? timestampDate(response.expiresAt)
61
66
  : undefined;
62
67
  openUrl(url);
63
- return { url, expiresAt };
68
+ const result = { url, expiresAt };
69
+ setLastLaunchResult(result);
70
+ return result;
64
71
  }
65
72
  catch (err) {
66
73
  setError(toError(err));
@@ -70,6 +77,6 @@ export function useLaunchLocalRunner(options) {
70
77
  setIsLaunching(false);
71
78
  }
72
79
  }, [stigmer, openUrl]);
73
- return { launch, isLaunching, error, clearError };
80
+ return { launch, isLaunching, lastLaunchResult, error, clearError };
74
81
  }
75
82
  //# sourceMappingURL=useLaunchLocalRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLaunchLocalRunner.js","sourceRoot":"","sources":["../../src/runner/useLaunchLocalRunner.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAEvD,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;AAC7B,CAAC;AAkDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAqC;IAErC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,cAAc,CAAC;IAEnD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzD,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,KAAsB,EAAoC,EAAE;QACjE,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,iBAAiB,CACrD,MAAM,CAAC,8BAA8B,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAC3D,CAAC;YAEF,MAAM,GAAG,GAAG,GAAG,oBAAoB,UAAU,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS;gBAClC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACnC,CAAC,CAAC,SAAS,CAAC;YAEd,OAAO,CAAC,GAAG,CAAC,CAAC;YAEb,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,EAAE,OAAO,CAAC,CACnB,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"useLaunchLocalRunner.js","sourceRoot":"","sources":["../../src/runner/useLaunchLocalRunner.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAEvD,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;AAC7B,CAAC;AA2DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAqC;IAErC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAC3C,QAAQ,CAAiC,IAAI,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,cAAc,CAAC;IAEnD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,KAAsB,EAAoC,EAAE;QACjE,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,iBAAiB,CACrD,MAAM,CAAC,8BAA8B,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAC3D,CAAC;YAEF,MAAM,GAAG,GAAG,GAAG,oBAAoB,UAAU,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS;gBAClC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACnC,CAAC,CAAC,SAAS,CAAC;YAEd,OAAO,CAAC,GAAG,CAAC,CAAC;YAEb,MAAM,MAAM,GAA4B,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;YAC3D,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,EAAE,OAAO,CAAC,CACnB,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACtE,CAAC"}
@@ -53,6 +53,7 @@ describe("useLaunchLocalRunner", () => {
53
53
 
54
54
  expect(result.current.isLaunching).toBe(false);
55
55
  expect(result.current.error).toBeNull();
56
+ expect(result.current.lastLaunchResult).toBeNull();
56
57
 
57
58
  let launchResult: Awaited<ReturnType<typeof result.current.launch>>;
58
59
  await act(async () => {
@@ -72,6 +73,7 @@ describe("useLaunchLocalRunner", () => {
72
73
 
73
74
  expect(result.current.isLaunching).toBe(false);
74
75
  expect(result.current.error).toBeNull();
76
+ expect(result.current.lastLaunchResult).toEqual(launchResult!);
75
77
  });
76
78
 
77
79
  it("URL-encodes tokens with special characters", async () => {
@@ -196,6 +198,29 @@ describe("useLaunchLocalRunner", () => {
196
198
  expect(result.current.error).toBeNull();
197
199
  });
198
200
 
201
+ it("clearError also resets lastLaunchResult", async () => {
202
+ const response = create(CreateLaunchTokenResponseSchema, {
203
+ token: "tok_clear",
204
+ });
205
+ createLaunchToken.mockResolvedValueOnce(response);
206
+
207
+ const openUrl = vi.fn();
208
+ const { result } = renderHook(
209
+ () => useLaunchLocalRunner({ openUrl }),
210
+ { wrapper: makeWrapper(client) },
211
+ );
212
+
213
+ await act(async () => {
214
+ await result.current.launch({ org: ORG });
215
+ });
216
+ expect(result.current.lastLaunchResult).not.toBeNull();
217
+
218
+ act(() => {
219
+ result.current.clearError();
220
+ });
221
+ expect(result.current.lastLaunchResult).toBeNull();
222
+ });
223
+
199
224
  it("resets previous error on a new successful launch", async () => {
200
225
  createLaunchToken.mockRejectedValueOnce(new Error("first fail"));
201
226
 
@@ -55,9 +55,18 @@ export interface UseLaunchLocalRunnerReturn {
55
55
  readonly launch: (input: { org: string }) => Promise<LaunchLocalRunnerResult>;
56
56
  /** `true` while the token creation and URL dispatch are in flight. */
57
57
  readonly isLaunching: boolean;
58
+ /**
59
+ * Result from the most recent successful launch dispatch, or `null`
60
+ * when no launch has been dispatched (or after {@link clearError}).
61
+ *
62
+ * Consumers can use `lastLaunchResult.expiresAt` to implement
63
+ * timeout-based detection: if no runner appears before the token
64
+ * expires, the desktop app likely did not receive the deep link.
65
+ */
66
+ readonly lastLaunchResult: LaunchLocalRunnerResult | null;
58
67
  /** Error from the last failed launch attempt, or `null` when healthy. */
59
68
  readonly error: Error | null;
60
- /** Reset `error` to `null`. */
69
+ /** Reset `error` and `lastLaunchResult` to `null`. */
61
70
  readonly clearError: () => void;
62
71
  }
63
72
 
@@ -102,15 +111,21 @@ export function useLaunchLocalRunner(
102
111
  const stigmer = useStigmer();
103
112
  const [isLaunching, setIsLaunching] = useState(false);
104
113
  const [error, setError] = useState<Error | null>(null);
114
+ const [lastLaunchResult, setLastLaunchResult] =
115
+ useState<LaunchLocalRunnerResult | null>(null);
105
116
 
106
117
  const openUrl = options?.openUrl ?? defaultOpenUrl;
107
118
 
108
- const clearError = useCallback(() => setError(null), []);
119
+ const clearError = useCallback(() => {
120
+ setError(null);
121
+ setLastLaunchResult(null);
122
+ }, []);
109
123
 
110
124
  const launch = useCallback(
111
125
  async (input: { org: string }): Promise<LaunchLocalRunnerResult> => {
112
126
  setIsLaunching(true);
113
127
  setError(null);
128
+ setLastLaunchResult(null);
114
129
 
115
130
  try {
116
131
  const response = await stigmer.runner.createLaunchToken(
@@ -124,7 +139,9 @@ export function useLaunchLocalRunner(
124
139
 
125
140
  openUrl(url);
126
141
 
127
- return { url, expiresAt };
142
+ const result: LaunchLocalRunnerResult = { url, expiresAt };
143
+ setLastLaunchResult(result);
144
+ return result;
128
145
  } catch (err) {
129
146
  setError(toError(err));
130
147
  throw err;
@@ -135,5 +152,5 @@ export function useLaunchLocalRunner(
135
152
  [stigmer, openUrl],
136
153
  );
137
154
 
138
- return { launch, isLaunching, error, clearError };
155
+ return { launch, isLaunching, lastLaunchResult, error, clearError };
139
156
  }