pyric-admin 0.1.0-alpha.17 → 0.1.0-alpha.18

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
@@ -14,12 +14,38 @@ Pyric adds a development-only resolution layer to a Firebase application. Run th
14
14
 
15
15
  The mirrored data services do not connect to a production Firebase project. Local writes cannot delete production data or create Firebase usage charges, and local rules changes do not deploy. Pyric owns the development sandbox and verification workflow. Firebase owns production, with `firebase-tools` or the Firebase Console handling deployment.
16
16
 
17
- ## Start a new Firebase application locally
17
+ ## Start with a coding agent
18
+
19
+ Install the Pyric plugin:
20
+
21
+ ```bash
22
+ npx plugins add davideast/pyric
23
+ ```
24
+
25
+ Antigravity CLI and OpenCode use the standalone skill installer:
26
+
27
+ ```bash
28
+ # Antigravity CLI
29
+ npx skills add https://github.com/davideast/pyric/tree/main/pyric-plugin/skills/pyric-start --agent antigravity-cli
30
+
31
+ # OpenCode
32
+ npx skills add https://github.com/davideast/pyric/tree/main/pyric-plugin/skills/pyric-start --agent opencode
33
+ ```
34
+
35
+ Then ask your agent:
36
+
37
+ ```text
38
+ Use the pyric-start skill to set up and run Pyric in this project.
39
+ ```
40
+
41
+ The skill chooses the project launcher, starts one local sandbox bridge, opens the application, and confirms that the browser sandbox is connected.
42
+
43
+ ## Start from the terminal
18
44
 
19
45
  Create a Vite application with canonical Firebase imports, Firestore rules, and the Pyric development plugin already configured:
20
46
 
21
47
  ```bash
22
- npm create pyric my-app
48
+ npm create pyric@latest my-app
23
49
  cd my-app
24
50
  npm install
25
51
  npm run dev
@@ -41,7 +67,7 @@ import { defineConfig } from 'vite';
41
67
  import { pyric } from '@pyric/cli/vite';
42
68
 
43
69
  export default defineConfig({
44
- plugins: [pyricSandbox()],
70
+ plugins: [pyric()],
45
71
  });
46
72
  ```
47
73
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@
27
27
  * Mirror-owned `FirebaseMessagingError` and `MessagingClientErrorCode`
28
28
  * preserve the observable names, codes, and static members used by callers.
29
29
  */
30
- import { initializeSandbox } from 'pyric/sandbox';
30
+ import { initializeSandbox, isRemoteSandbox } from 'pyric/sandbox';
31
31
  import { getMessagingBroker, BrokerSendError, } from 'pyric/messaging/internal';
32
32
  import { ADMIN_APP_TARGET, getApp, } from '../app/index.js';
33
33
  import { assertAdminAppActive } from '../app/lifecycle.js';
@@ -62,15 +62,45 @@ function clientErrorInfoFor(fcmErrorCode) {
62
62
  return ErrorCodes.INVALID_ARGUMENT;
63
63
  }
64
64
  /** Re-wrap a broker rejection exactly as firebase-admin wraps the wire envelope. */
65
- function rethrowWrapped(error) {
65
+ function toMessagingError(error) {
66
66
  if (error instanceof BrokerSendError) {
67
- throw new MessagingError(clientErrorInfoFor(error.errorCode), error.envelope.error.message);
67
+ return new MessagingError(clientErrorInfoFor(error.errorCode), error.envelope.error.message);
68
+ }
69
+ if (error !== null && typeof error === 'object' && 'envelope' in error && error.envelope) {
70
+ const sendErr = new BrokerSendError(error.envelope);
71
+ return new MessagingError(clientErrorInfoFor(sendErr.errorCode), sendErr.envelope.error.message);
68
72
  }
69
- throw error;
73
+ return error;
74
+ }
75
+ function rethrowWrapped(error) {
76
+ throw toMessagingError(error);
70
77
  }
71
78
  function invalidArgument(message) {
72
79
  return new MessagingError(ErrorCodes.INVALID_ARGUMENT, message);
73
80
  }
81
+ async function dispatchSend(sandbox, broker, message, validateOnly) {
82
+ if (isRemoteSandbox(sandbox)) {
83
+ const res = (await sandbox.channel.op({
84
+ method: 'messaging.send',
85
+ message,
86
+ ...(validateOnly ? { validateOnly } : {}),
87
+ }));
88
+ return res.name;
89
+ }
90
+ return broker.send(message, { validateOnly }).name;
91
+ }
92
+ async function dispatchTopicOp(sandbox, broker, action, tokens, topic) {
93
+ if (isRemoteSandbox(sandbox)) {
94
+ return (await sandbox.channel.op({
95
+ method: action === 'subscribe' ? 'messaging.subscribeToTopic' : 'messaging.unsubscribeFromTopic',
96
+ tokens,
97
+ topic,
98
+ }));
99
+ }
100
+ return action === 'subscribe'
101
+ ? broker.subscribeToTopic(tokens, topic)
102
+ : broker.unsubscribeFromTopic(tokens, topic);
103
+ }
74
104
  // ── The sandbox Messaging service ────────────────────────────────────────────
75
105
  /**
76
106
  * The sandbox `Messaging` service mirror, implementing the send plane over
@@ -96,7 +126,7 @@ export class Messaging {
96
126
  */
97
127
  async send(message, dryRun) {
98
128
  try {
99
- return this.broker.send(message, { validateOnly: dryRun === true }).name;
129
+ return await dispatchSend(this.boundApp.sandbox, this.broker, message, dryRun === true);
100
130
  }
101
131
  catch (error) {
102
132
  rethrowWrapped(error);
@@ -116,15 +146,11 @@ export class Messaging {
116
146
  const responses = [];
117
147
  for (const message of messages) {
118
148
  try {
119
- const name = this.broker.send(message, {
120
- validateOnly: dryRun === true,
121
- }).name;
149
+ const name = await dispatchSend(this.boundApp.sandbox, this.broker, message, dryRun === true);
122
150
  responses.push({ success: true, messageId: name });
123
151
  }
124
152
  catch (error) {
125
- const wrapped = error instanceof BrokerSendError
126
- ? new MessagingError(clientErrorInfoFor(error.errorCode), error.envelope.error.message)
127
- : error;
153
+ const wrapped = toMessagingError(error);
128
154
  responses.push({
129
155
  success: false,
130
156
  error: wrapped,
@@ -153,17 +179,14 @@ export class Messaging {
153
179
  async unsubscribeFromTopic(tokenOrTokens, topic) {
154
180
  return this.manageTopic(tokenOrTokens, topic, 'unsubscribe');
155
181
  }
156
- manageTopic(tokenOrTokens, topic, action) {
182
+ async manageTopic(tokenOrTokens, topic, action) {
157
183
  const tokens = Array.isArray(tokenOrTokens) ? tokenOrTokens : [tokenOrTokens];
158
184
  if (tokens.length === 0) {
159
185
  throw invalidArgument('registration token(s) must be a non-empty string or a non-empty array');
160
186
  }
161
187
  let outcome;
162
188
  try {
163
- outcome =
164
- action === 'subscribe'
165
- ? this.broker.subscribeToTopic(tokens, topic)
166
- : this.broker.unsubscribeFromTopic(tokens, topic);
189
+ outcome = await dispatchTopicOp(this.boundApp.sandbox, this.broker, action, tokens, topic);
167
190
  }
168
191
  catch (error) {
169
192
  rethrowWrapped(error);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pyric-admin",
3
- "version": "0.1.0-alpha.17",
3
+ "version": "0.1.0-alpha.18",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://pyric.dev",
6
6
  "repository": {
@@ -51,7 +51,7 @@
51
51
  "typecheck": "bun x tsc -p tsconfig.json --noEmit"
52
52
  },
53
53
  "dependencies": {
54
- "pyric": "^0.1.0-alpha.17"
54
+ "pyric": "^0.1.0-alpha.18"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@types/bun": "latest",
@@ -28,7 +28,7 @@
28
28
  * preserve the observable names, codes, and static members used by callers.
29
29
  */
30
30
 
31
- import { initializeSandbox } from 'pyric/sandbox';
31
+ import { initializeSandbox, isRemoteSandbox, type RemoteSandbox, type Sandbox } from 'pyric/sandbox';
32
32
  import {
33
33
  getMessagingBroker,
34
34
  BrokerSendError,
@@ -116,17 +116,61 @@ function clientErrorInfoFor(fcmErrorCode: string | undefined): ErrorCodeInfo {
116
116
  }
117
117
 
118
118
  /** Re-wrap a broker rejection exactly as firebase-admin wraps the wire envelope. */
119
- function rethrowWrapped(error: unknown): never {
119
+ function toMessagingError(error: unknown): unknown {
120
120
  if (error instanceof BrokerSendError) {
121
- throw new MessagingError(clientErrorInfoFor(error.errorCode), error.envelope.error.message);
121
+ return new MessagingError(clientErrorInfoFor(error.errorCode), error.envelope.error.message);
122
+ }
123
+ if (error !== null && typeof error === 'object' && 'envelope' in error && (error as any).envelope) {
124
+ const sendErr = new BrokerSendError((error as any).envelope);
125
+ return new MessagingError(clientErrorInfoFor(sendErr.errorCode), sendErr.envelope.error.message);
122
126
  }
123
- throw error;
127
+ return error;
128
+ }
129
+
130
+ function rethrowWrapped(error: unknown): never {
131
+ throw toMessagingError(error);
124
132
  }
125
133
 
126
134
  function invalidArgument(message: string): Error & { readonly code: string } {
127
135
  return new MessagingError(ErrorCodes.INVALID_ARGUMENT!, message);
128
136
  }
129
137
 
138
+ async function dispatchSend(
139
+ sandbox: Sandbox,
140
+ broker: MessagingBroker,
141
+ message: BrokerMessage,
142
+ validateOnly: boolean,
143
+ ): Promise<string> {
144
+ if (isRemoteSandbox(sandbox)) {
145
+ const res = (await sandbox.channel.op({
146
+ method: 'messaging.send',
147
+ message,
148
+ ...(validateOnly ? { validateOnly } : {}),
149
+ })) as { name: string };
150
+ return res.name;
151
+ }
152
+ return broker.send(message, { validateOnly }).name;
153
+ }
154
+
155
+ async function dispatchTopicOp(
156
+ sandbox: Sandbox,
157
+ broker: MessagingBroker,
158
+ action: 'subscribe' | 'unsubscribe',
159
+ tokens: string[],
160
+ topic: string,
161
+ ): Promise<TopicManagementOutcome> {
162
+ if (isRemoteSandbox(sandbox)) {
163
+ return (await sandbox.channel.op({
164
+ method: action === 'subscribe' ? 'messaging.subscribeToTopic' : 'messaging.unsubscribeFromTopic',
165
+ tokens,
166
+ topic,
167
+ })) as TopicManagementOutcome;
168
+ }
169
+ return action === 'subscribe'
170
+ ? broker.subscribeToTopic(tokens, topic)
171
+ : broker.unsubscribeFromTopic(tokens, topic);
172
+ }
173
+
130
174
  // ── The sandbox Messaging service ────────────────────────────────────────────
131
175
 
132
176
  /**
@@ -156,7 +200,12 @@ export class Messaging {
156
200
  */
157
201
  async send(message: Message, dryRun?: boolean): Promise<string> {
158
202
  try {
159
- return this.broker.send(message as BrokerMessage, { validateOnly: dryRun === true }).name;
203
+ return await dispatchSend(
204
+ this.boundApp.sandbox,
205
+ this.broker,
206
+ message as BrokerMessage,
207
+ dryRun === true,
208
+ );
160
209
  } catch (error) {
161
210
  rethrowWrapped(error);
162
211
  }
@@ -176,15 +225,15 @@ export class Messaging {
176
225
  const responses: SendResponse[] = [];
177
226
  for (const message of messages) {
178
227
  try {
179
- const name = this.broker.send(message as BrokerMessage, {
180
- validateOnly: dryRun === true,
181
- }).name;
228
+ const name = await dispatchSend(
229
+ this.boundApp.sandbox,
230
+ this.broker,
231
+ message as BrokerMessage,
232
+ dryRun === true,
233
+ );
182
234
  responses.push({ success: true, messageId: name });
183
235
  } catch (error) {
184
- const wrapped =
185
- error instanceof BrokerSendError
186
- ? new MessagingError(clientErrorInfoFor(error.errorCode), error.envelope.error.message)
187
- : error;
236
+ const wrapped = toMessagingError(error);
188
237
  responses.push({
189
238
  success: false,
190
239
  error: wrapped as unknown as SendResponse['error'],
@@ -226,21 +275,24 @@ export class Messaging {
226
275
  return this.manageTopic(tokenOrTokens, topic, 'unsubscribe');
227
276
  }
228
277
 
229
- private manageTopic(
278
+ private async manageTopic(
230
279
  tokenOrTokens: string | string[],
231
280
  topic: string,
232
281
  action: 'subscribe' | 'unsubscribe',
233
- ): MessagingTopicManagementResponse {
282
+ ): Promise<MessagingTopicManagementResponse> {
234
283
  const tokens = Array.isArray(tokenOrTokens) ? tokenOrTokens : [tokenOrTokens];
235
284
  if (tokens.length === 0) {
236
285
  throw invalidArgument('registration token(s) must be a non-empty string or a non-empty array');
237
286
  }
238
287
  let outcome: TopicManagementOutcome;
239
288
  try {
240
- outcome =
241
- action === 'subscribe'
242
- ? this.broker.subscribeToTopic(tokens, topic)
243
- : this.broker.unsubscribeFromTopic(tokens, topic);
289
+ outcome = await dispatchTopicOp(
290
+ this.boundApp.sandbox,
291
+ this.broker,
292
+ action,
293
+ tokens,
294
+ topic,
295
+ );
244
296
  } catch (error) {
245
297
  rethrowWrapped(error);
246
298
  }