@fungi.computer/agar 0.0.0-stage → 0.0.1

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 (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +766 -2
  3. package/dist/agent-message-meta.d.ts +74 -0
  4. package/dist/agent-message-meta.js +63 -0
  5. package/dist/agents.d.ts +170 -0
  6. package/dist/agents.js +218 -0
  7. package/dist/app-build-contract.d.ts +43 -0
  8. package/dist/app-build-contract.js +24 -0
  9. package/dist/apps.d.ts +66 -0
  10. package/dist/apps.js +47 -0
  11. package/dist/backend-declaration.d.ts +6 -0
  12. package/dist/backend-declaration.js +65 -0
  13. package/dist/backend-definition.d.ts +88 -0
  14. package/dist/backend-definition.js +158 -0
  15. package/dist/backend-refusal.d.ts +10 -0
  16. package/dist/backend-refusal.js +10 -0
  17. package/dist/backend.d.ts +30 -0
  18. package/dist/backend.js +28 -0
  19. package/dist/capabilities.d.ts +30 -0
  20. package/dist/capabilities.js +50 -0
  21. package/dist/channels.d.ts +142 -0
  22. package/dist/channels.js +97 -0
  23. package/dist/commands.d.ts +33 -0
  24. package/dist/commands.js +46 -0
  25. package/dist/computer-contracts.d.ts +73 -0
  26. package/dist/computer-contracts.js +57 -0
  27. package/dist/computer.d.ts +294 -0
  28. package/dist/computer.js +319 -0
  29. package/dist/connect.d.ts +11 -0
  30. package/dist/connect.js +211 -0
  31. package/dist/errors.d.ts +34 -0
  32. package/dist/errors.js +106 -0
  33. package/dist/failure.d.ts +2 -0
  34. package/dist/failure.js +9 -0
  35. package/dist/files.d.ts +25 -0
  36. package/dist/files.js +84 -0
  37. package/dist/game-servers.d.ts +530 -0
  38. package/dist/game-servers.js +244 -0
  39. package/dist/gills.d.ts +43 -0
  40. package/dist/gills.js +174 -0
  41. package/dist/git-commit.d.ts +143 -0
  42. package/dist/git-commit.js +251 -0
  43. package/dist/git-rpc.d.ts +310 -0
  44. package/dist/git-rpc.js +166 -0
  45. package/dist/git-steps.d.ts +579 -0
  46. package/dist/git-steps.js +804 -0
  47. package/dist/git-wire.d.ts +33 -0
  48. package/dist/git-wire.js +240 -0
  49. package/dist/git.d.ts +322 -0
  50. package/dist/git.js +98 -0
  51. package/dist/host.d.ts +97 -0
  52. package/dist/host.js +732 -0
  53. package/dist/inbox.d.ts +99 -0
  54. package/dist/inbox.js +184 -0
  55. package/dist/index.d.ts +31 -0
  56. package/dist/index.js +15 -0
  57. package/dist/inference.d.ts +17 -0
  58. package/dist/inference.js +115 -0
  59. package/dist/internal/app-error.d.ts +8 -0
  60. package/dist/internal/app-error.js +36 -0
  61. package/dist/internal/app-session.d.ts +8 -0
  62. package/dist/internal/app-session.js +551 -0
  63. package/dist/internal/back-inputs.d.ts +22 -0
  64. package/dist/internal/back-inputs.js +93 -0
  65. package/dist/internal/browser-bridge.d.ts +30 -0
  66. package/dist/internal/browser-bridge.js +203 -0
  67. package/dist/internal/capabilities.d.ts +13 -0
  68. package/dist/internal/capabilities.js +138 -0
  69. package/dist/internal/commands.d.ts +9 -0
  70. package/dist/internal/commands.js +257 -0
  71. package/dist/internal/disconnect-host.d.ts +7 -0
  72. package/dist/internal/disconnect-host.js +19 -0
  73. package/dist/internal/git-edit-tree.d.ts +6 -0
  74. package/dist/internal/git-edit-tree.js +46 -0
  75. package/dist/internal/memory-fs.d.ts +39 -0
  76. package/dist/internal/memory-fs.js +154 -0
  77. package/dist/internal/protocol.d.ts +116 -0
  78. package/dist/internal/protocol.js +6 -0
  79. package/dist/internal/query-feed.d.ts +23 -0
  80. package/dist/internal/query-feed.js +111 -0
  81. package/dist/internal/result.d.ts +22 -0
  82. package/dist/internal/result.js +61 -0
  83. package/dist/internal/rpc-contract.d.ts +24 -0
  84. package/dist/internal/rpc-contract.js +78 -0
  85. package/dist/internal/schemas.d.ts +307 -0
  86. package/dist/internal/schemas.js +524 -0
  87. package/dist/internal/store.d.ts +8 -0
  88. package/dist/internal/store.js +30 -0
  89. package/dist/internal/terminal-gate.d.ts +17 -0
  90. package/dist/internal/terminal-gate.js +94 -0
  91. package/dist/lifecycle.d.ts +44 -0
  92. package/dist/lifecycle.js +1 -0
  93. package/dist/marketplace.d.ts +159 -0
  94. package/dist/marketplace.js +102 -0
  95. package/dist/media-json.d.ts +181 -0
  96. package/dist/media-json.js +204 -0
  97. package/dist/media-library.d.ts +11 -0
  98. package/dist/media-library.js +15 -0
  99. package/dist/media-request-id.d.ts +7 -0
  100. package/dist/media-request-id.js +16 -0
  101. package/dist/media.d.ts +354 -0
  102. package/dist/media.js +654 -0
  103. package/dist/method-refusal.d.ts +64 -0
  104. package/dist/method-refusal.js +48 -0
  105. package/dist/pending.d.ts +10 -0
  106. package/dist/pending.js +10 -0
  107. package/dist/query.d.ts +76 -0
  108. package/dist/query.js +195 -0
  109. package/dist/react-mount.d.ts +23 -0
  110. package/dist/react-mount.js +108 -0
  111. package/dist/react.d.ts +41 -0
  112. package/dist/react.js +111 -0
  113. package/dist/read-copy.d.ts +103 -0
  114. package/dist/read-copy.js +195 -0
  115. package/dist/roles/files.d.ts +295 -0
  116. package/dist/roles/files.js +184 -0
  117. package/dist/root.d.ts +21 -0
  118. package/dist/root.js +1 -0
  119. package/dist/rpc.d.ts +1 -0
  120. package/dist/rpc.js +1 -0
  121. package/dist/status.d.ts +17 -0
  122. package/dist/status.js +50 -0
  123. package/dist/storage-wire.d.ts +167 -0
  124. package/dist/storage-wire.js +115 -0
  125. package/dist/storage.d.ts +72 -0
  126. package/dist/storage.js +143 -0
  127. package/dist/store.d.ts +11 -0
  128. package/dist/store.js +1 -0
  129. package/dist/test-kit/git.d.ts +31 -0
  130. package/dist/test-kit/git.js +174 -0
  131. package/dist/ui.d.ts +169 -0
  132. package/dist/ui.js +10 -0
  133. package/dist/window.d.ts +41 -0
  134. package/dist/window.js +15 -0
  135. package/dist/world.d.ts +16 -0
  136. package/dist/world.js +17 -0
  137. package/docs/api/README.md +28 -0
  138. package/docs/api/app-build-contract.md +113 -0
  139. package/docs/api/backend-declaration.md +62 -0
  140. package/docs/api/backend-definition.md +215 -0
  141. package/docs/api/backend.md +269 -0
  142. package/docs/api/errors.md +169 -0
  143. package/docs/api/files.md +91 -0
  144. package/docs/api/gills.md +164 -0
  145. package/docs/api/git-commit.md +279 -0
  146. package/docs/api/git-rpc.md +243 -0
  147. package/docs/api/git-steps.md +1010 -0
  148. package/docs/api/git-wire.md +197 -0
  149. package/docs/api/git.md +579 -0
  150. package/docs/api/index.md +2880 -0
  151. package/docs/api/media-json.md +507 -0
  152. package/docs/api/media-request-id.md +32 -0
  153. package/docs/api/modules.md +32 -0
  154. package/docs/api/query.md +253 -0
  155. package/docs/api/react.md +216 -0
  156. package/docs/api/read-copy.md +204 -0
  157. package/docs/api/rpc.md +128 -0
  158. package/docs/api/storage.md +620 -0
  159. package/package.json +197 -3
@@ -0,0 +1,579 @@
1
+ <!-- Generated by Botanical API docs (TypeDoc + typedoc-plugin-markdown). Do not edit. -->
2
+
3
+ [**@fungi.computer/agar**](README.md)
4
+
5
+ ---
6
+
7
+ [@fungi.computer/agar](modules.md) / git
8
+
9
+ # git
10
+
11
+ ## Type Aliases
12
+
13
+ ### GitRepositoryName
14
+
15
+ ```ts
16
+ type GitRepositoryName = z.output<typeof gitRepositoryNameSchema>;
17
+ ```
18
+
19
+ Local repository name decoded at a host's repository boundary.
20
+
21
+ ---
22
+
23
+ ### RepositoryRef
24
+
25
+ ```ts
26
+ type RepositoryRef = z.output<typeof repositoryRefSchema>;
27
+ ```
28
+
29
+ Installation-local repository or registered Team source, selected by its host.
30
+
31
+ ---
32
+
33
+ ### GitWriter
34
+
35
+ ```ts
36
+ type GitWriter =
37
+ | Readonly<{
38
+ kind: "actor";
39
+ actor: HostActor;
40
+ role?: "owner" | "member";
41
+ workflow?: WorkflowAttestation & object;
42
+ }>
43
+ | Readonly<{
44
+ kind: "installation";
45
+ installationId: string;
46
+ onBehalfOf: HostActor | null;
47
+ }>;
48
+ ```
49
+
50
+ Host-held writer identity; Workflow attribution reuses Puffball's sole grammar.
51
+
52
+ ---
53
+
54
+ ### GitPushQuestion
55
+
56
+ ```ts
57
+ type GitPushQuestion = z.output<typeof gitPushQuestionSchema>;
58
+ ```
59
+
60
+ Ref question sent only after host grant and Workflow branch admission.
61
+
62
+ ---
63
+
64
+ ### GitPushVerdict
65
+
66
+ ```ts
67
+ type GitPushVerdict = z.output<typeof gitPushVerdictSchema>;
68
+ ```
69
+
70
+ Explicit permission or bounded per-ref refusal for the whole push.
71
+
72
+ ---
73
+
74
+ ### GitRefUpdate
75
+
76
+ ```ts
77
+ type GitRefUpdate = z.output<typeof appGitPushFactSchema>["updates"][number];
78
+ ```
79
+
80
+ One bounded ref update, shared by push questions and accepted facts.
81
+
82
+ ---
83
+
84
+ ### AppGitPushFact
85
+
86
+ ```ts
87
+ type AppGitPushFact = z.output<typeof appGitPushFactSchema>;
88
+ ```
89
+
90
+ Host-delivered push fact; retries retain the same event ID.
91
+
92
+ ---
93
+
94
+ ### AppGitLifecycle
95
+
96
+ ```ts
97
+ type AppGitLifecycle = Readonly<{
98
+ authorizeGitPush?: (question) => Promise<GitPushVerdict>;
99
+ onGitPush?: (fact) => Promise<void>;
100
+ }>;
101
+ ```
102
+
103
+ App-owned lifecycle handler, separate from its callable method catalog.
104
+
105
+ ---
106
+
107
+ ### GitRepositoryInfo
108
+
109
+ ```ts
110
+ type GitRepositoryInfo = Readonly<{
111
+ name: string;
112
+ defaultBranch: string;
113
+ lastPushAt: string | null;
114
+ source: string | null;
115
+ }>;
116
+ ```
117
+
118
+ Credential-free repository metadata, with installation-local names.
119
+
120
+ ---
121
+
122
+ ### GitCommit
123
+
124
+ ```ts
125
+ type GitCommit = Readonly<{
126
+ hash: string;
127
+ treeHash: string;
128
+ message: string;
129
+ author: {
130
+ name: string;
131
+ email: string;
132
+ };
133
+ committer: {
134
+ name: string;
135
+ email: string;
136
+ };
137
+ parents: string[];
138
+ authoredAt: number;
139
+ committedAt: number;
140
+ }>;
141
+ ```
142
+
143
+ Artifacts commit metadata, with the provider's credential fields absent.
144
+
145
+ ---
146
+
147
+ ### GitTreeEntry
148
+
149
+ ```ts
150
+ type GitTreeEntry = Readonly<{
151
+ name: string;
152
+ mode: string;
153
+ hash: string;
154
+ type: "blob" | "tree" | "commit";
155
+ }>;
156
+ ```
157
+
158
+ One immediate child of a Git tree.
159
+
160
+ ---
161
+
162
+ ### GitExchangeRequest
163
+
164
+ ```ts
165
+ type GitExchangeRequest = Readonly<{
166
+ service: "upload-pack" | "receive-pack";
167
+ phase: "advertise" | "exchange";
168
+ body: Uint8Array | null;
169
+ headers: Readonly<Record<string, string>>;
170
+ }>;
171
+ ```
172
+
173
+ Smart-HTTP request; the host supplies and keeps the provider credential.
174
+
175
+ ---
176
+
177
+ ### GitExchangeResponse
178
+
179
+ ```ts
180
+ type GitExchangeResponse = Readonly<{
181
+ status: number;
182
+ headers: Readonly<Record<string, string>>;
183
+ body: Uint8Array;
184
+ }>;
185
+ ```
186
+
187
+ Credential-free RPC response; host adapters own stream conversion and byte
188
+ bounds.
189
+
190
+ ---
191
+
192
+ ### GitBinding
193
+
194
+ ```ts
195
+ type GitBinding = Readonly<{
196
+ create: Promise<
197
+ Readonly<{
198
+ name: string;
199
+ defaultBranch: string;
200
+ lastPushAt: string | null;
201
+ source: string | null;
202
+ }>
203
+ >;
204
+ fork: Promise<
205
+ Readonly<{
206
+ name: string;
207
+ defaultBranch: string;
208
+ lastPushAt: string | null;
209
+ source: string | null;
210
+ }>
211
+ >;
212
+ cloneUrl: Promise<string>;
213
+ info: Promise<Readonly<{
214
+ name: string;
215
+ defaultBranch: string;
216
+ lastPushAt: string | null;
217
+ source: string | null;
218
+ }> | null>;
219
+ delete: Promise<boolean>;
220
+ log: Promise<
221
+ Readonly<{
222
+ hash: string;
223
+ treeHash: string;
224
+ message: string;
225
+ author: {
226
+ name: string;
227
+ email: string;
228
+ };
229
+ committer: {
230
+ name: string;
231
+ email: string;
232
+ };
233
+ parents: string[];
234
+ authoredAt: number;
235
+ committedAt: number;
236
+ }>[]
237
+ >;
238
+ readCommit: Promise<Readonly<{
239
+ hash: string;
240
+ treeHash: string;
241
+ message: string;
242
+ author: {
243
+ name: string;
244
+ email: string;
245
+ };
246
+ committer: {
247
+ name: string;
248
+ email: string;
249
+ };
250
+ parents: string[];
251
+ authoredAt: number;
252
+ committedAt: number;
253
+ }> | null>;
254
+ readTree: Promise<
255
+ | Readonly<{
256
+ name: string;
257
+ mode: string;
258
+ hash: string;
259
+ type: "blob" | "tree" | "commit";
260
+ }>[]
261
+ | null
262
+ >;
263
+ readBlob: Promise<Uint8Array<ArrayBufferLike> | null>;
264
+ refs: Promise<object[]>;
265
+ exchange: Promise<
266
+ Readonly<{
267
+ status: number;
268
+ headers: Readonly<Record<string, string>>;
269
+ body: Uint8Array;
270
+ }>
271
+ >;
272
+ }>;
273
+ ```
274
+
275
+ Installation-scoped GIT backend binding; approved operations and actor grants
276
+ bound every call.
277
+
278
+ ## Variables
279
+
280
+ ### gitRepositoryCapability
281
+
282
+ ```ts
283
+ const gitRepositoryCapability: "git.repository";
284
+ ```
285
+
286
+ Requested installation-scoped Git authority; a declaration is never a grant.
287
+
288
+ ---
289
+
290
+ ### repositoryRefSchema
291
+
292
+ ```ts
293
+ const repositoryRefSchema: ZodDiscriminatedUnion<
294
+ [
295
+ ZodObject<
296
+ {
297
+ kind: ZodLiteral<"installation">;
298
+ installationId: ZodString;
299
+ repository: ZodString;
300
+ },
301
+ $strict
302
+ >,
303
+ ZodObject<
304
+ {
305
+ kind: ZodLiteral<"team-source">;
306
+ repository: ZodString;
307
+ },
308
+ $strict
309
+ >,
310
+ ],
311
+ "kind"
312
+ >;
313
+ ```
314
+
315
+ Host-selected repository namespace. Team identity comes from the host; decoding
316
+ this reference never grants access to either namespace.
317
+
318
+ ---
319
+
320
+ ### gitWriterSchema
321
+
322
+ ```ts
323
+ const gitWriterSchema: ZodDiscriminatedUnion<[ZodObject<{
324
+ kind: ZodLiteral<"actor">;
325
+ actor: ZodDiscriminatedUnion<[ZodObject<{
326
+ kind: ZodMiniLiteral<"member">;
327
+ memberId: ZodMiniString<string>;
328
+ }, $strict>, ZodObject<{
329
+ kind: ZodMiniLiteral<"agent">;
330
+ agentId: ZodMiniString<string>;
331
+ }, $strict>, ZodObject<{
332
+ kind: ZodMiniLiteral<"team-key">;
333
+ keyId: ZodMiniString<string>;
334
+ }, $strict>], "kind">;
335
+ role: ZodMiniOptional<ZodMiniEnum<{
336
+ member: "member";
337
+ owner: "owner";
338
+ }>>;
339
+ workflow: ZodOptional<ZodObject<{
340
+ armedBy: ZodDiscriminatedUnion<[ZodObject<{
341
+ kind: ...;
342
+ memberId: ...;
343
+ }, $strict>, ZodObject<{
344
+ kind: ...;
345
+ agentId: ...;
346
+ }, $strict>, ZodObject<{
347
+ kind: ...;
348
+ keyId: ...;
349
+ }, $strict>], "kind">;
350
+ branches: ZodArray<ZodString>;
351
+ workflowId: ZodMiniString<string>;
352
+ runId: ZodMiniString<string>;
353
+ nodeId: ZodMiniString<string>;
354
+ }, $strict>>;
355
+ }, $strict>, ZodObject<{
356
+ kind: ZodLiteral<"installation">;
357
+ installationId: ZodString;
358
+ onBehalfOf: ZodNullable<ZodDiscriminatedUnion<[ZodObject<{
359
+ kind: ZodMiniLiteral<"member">;
360
+ memberId: ZodMiniString<string>;
361
+ }, $strict>, ZodObject<{
362
+ kind: ZodMiniLiteral<"agent">;
363
+ agentId: ZodMiniString<string>;
364
+ }, $strict>, ZodObject<{
365
+ kind: ZodMiniLiteral<"team-key">;
366
+ keyId: ZodMiniString<string>;
367
+ }, $strict>], "kind">>;
368
+ }, $strict>], "kind">;
369
+ ```
370
+
371
+ Canonical Git writer decoder; identity is attested by a host, never by an App.
372
+
373
+ ---
374
+
375
+ ### gitPushQuestionSchema
376
+
377
+ ```ts
378
+ const gitPushQuestionSchema: ZodObject<{
379
+ repository: ZodString;
380
+ writer: ZodObject<{
381
+ kind: ZodLiteral<"actor">;
382
+ actor: ZodDiscriminatedUnion<[ZodObject<{
383
+ kind: ZodMiniLiteral<"member">;
384
+ memberId: ZodMiniString<string>;
385
+ }, $strict>, ZodObject<{
386
+ kind: ZodMiniLiteral<"agent">;
387
+ agentId: ZodMiniString<string>;
388
+ }, $strict>, ZodObject<{
389
+ kind: ZodMiniLiteral<"team-key">;
390
+ keyId: ZodMiniString<string>;
391
+ }, $strict>], "kind">;
392
+ role: ZodMiniOptional<ZodMiniEnum<{
393
+ member: "member";
394
+ owner: "owner";
395
+ }>>;
396
+ workflow: ZodOptional<ZodObject<{
397
+ armedBy: ZodDiscriminatedUnion<[ZodObject<{
398
+ kind: ...;
399
+ memberId: ...;
400
+ }, $strict>, ZodObject<{
401
+ kind: ...;
402
+ agentId: ...;
403
+ }, $strict>, ZodObject<{
404
+ kind: ...;
405
+ keyId: ...;
406
+ }, $strict>], "kind">;
407
+ branches: ZodArray<ZodString>;
408
+ workflowId: ZodMiniString<string>;
409
+ runId: ZodMiniString<string>;
410
+ nodeId: ZodMiniString<string>;
411
+ }, $strict>>;
412
+ }, $strict>;
413
+ updates: ZodArray<ZodObject<{
414
+ ref: ZodString;
415
+ before: ZodString;
416
+ after: ZodString;
417
+ }, $strict>>;
418
+ }, $strict>;
419
+ ```
420
+
421
+ The App's question covers the whole push, under host-held attribution.
422
+
423
+ ---
424
+
425
+ ### gitPushVerdictSchema
426
+
427
+ ```ts
428
+ const gitPushVerdictSchema: ZodDiscriminatedUnion<
429
+ [
430
+ ZodObject<
431
+ {
432
+ allowed: ZodLiteral<true>;
433
+ },
434
+ $strict
435
+ >,
436
+ ZodObject<
437
+ {
438
+ allowed: ZodLiteral<false>;
439
+ refused: ZodArray<
440
+ ZodObject<
441
+ {
442
+ ref: ZodString;
443
+ message: ZodString;
444
+ },
445
+ $strict
446
+ >
447
+ >;
448
+ },
449
+ $strict
450
+ >,
451
+ ],
452
+ "allowed"
453
+ >;
454
+ ```
455
+
456
+ A whole push verdict; refusal messages are shown by ordinary Git clients.
457
+
458
+ ---
459
+
460
+ ### appGitPushFactSchema
461
+
462
+ ```ts
463
+ const appGitPushFactSchema: ZodObject<{
464
+ repository: ZodString;
465
+ writer: ZodDiscriminatedUnion<[ZodObject<{
466
+ kind: ZodLiteral<"actor">;
467
+ actor: ZodDiscriminatedUnion<[ZodObject<{
468
+ kind: ZodMiniLiteral<...>;
469
+ memberId: ZodMiniString<...>;
470
+ }, $strict>, ZodObject<{
471
+ kind: ZodMiniLiteral<...>;
472
+ agentId: ZodMiniString<...>;
473
+ }, $strict>, ZodObject<{
474
+ kind: ZodMiniLiteral<...>;
475
+ keyId: ZodMiniString<...>;
476
+ }, $strict>], "kind">;
477
+ role: ZodMiniOptional<ZodMiniEnum<{
478
+ member: "member";
479
+ owner: "owner";
480
+ }>>;
481
+ workflow: ZodOptional<ZodObject<{
482
+ armedBy: ZodDiscriminatedUnion<[..., ..., ...], "kind">;
483
+ branches: ZodArray<ZodString>;
484
+ workflowId: ZodMiniString<string>;
485
+ runId: ZodMiniString<string>;
486
+ nodeId: ZodMiniString<string>;
487
+ }, $strict>>;
488
+ }, $strict>, ZodObject<{
489
+ kind: ZodLiteral<"installation">;
490
+ installationId: ZodString;
491
+ onBehalfOf: ZodNullable<ZodDiscriminatedUnion<[ZodObject<{
492
+ kind: ...;
493
+ memberId: ...;
494
+ }, $strict>, ZodObject<{
495
+ kind: ...;
496
+ agentId: ...;
497
+ }, $strict>, ZodObject<{
498
+ kind: ...;
499
+ keyId: ...;
500
+ }, $strict>], "kind">>;
501
+ }, $strict>], "kind">;
502
+ updates: ZodArray<ZodObject<{
503
+ ref: ZodString;
504
+ before: ZodString;
505
+ after: ZodString;
506
+ }, $strict>>;
507
+ unexplained: ZodOptional<ZodArray<ZodObject<{
508
+ ref: ZodString;
509
+ journaled: ZodNullable<ZodString>;
510
+ }, $strict>>>;
511
+ eventId: ZodString;
512
+ }, $strict>;
513
+ ```
514
+
515
+ One accepted push, with host attribution and no remote or credential.
516
+
517
+ ## Functions
518
+
519
+ ### repositoryRefKey()
520
+
521
+ ```ts
522
+ function repositoryRefKey(repository): string;
523
+ ```
524
+
525
+ Stable namespace identity, serialized through the canonical repository decoder.
526
+
527
+ #### Parameters
528
+
529
+ | Parameter | Type |
530
+ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
531
+ | `repository` | \| \{ `kind`: `"installation"`; `installationId`: `string`; `repository`: `string`; \} \| \{ `kind`: `"team-source"`; `repository`: `string`; \} |
532
+
533
+ #### Returns
534
+
535
+ `string`
536
+
537
+ ---
538
+
539
+ ### repositoryRefsEqual()
540
+
541
+ ```ts
542
+ function repositoryRefsEqual(left, right): boolean;
543
+ ```
544
+
545
+ Compare repository namespace and coordinates independently of allocation or
546
+ property order.
547
+
548
+ #### Parameters
549
+
550
+ | Parameter | Type |
551
+ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
552
+ | `left` | \| \{ `kind`: `"installation"`; `installationId`: `string`; `repository`: `string`; \} \| \{ `kind`: `"team-source"`; `repository`: `string`; \} |
553
+ | `right` | \| \{ `kind`: `"installation"`; `installationId`: `string`; `repository`: `string`; \} \| \{ `kind`: `"team-source"`; `repository`: `string`; \} |
554
+
555
+ #### Returns
556
+
557
+ `boolean`
558
+
559
+ ---
560
+
561
+ ### dispatchAppGitPush()
562
+
563
+ ```ts
564
+ function dispatchAppGitPush(lifecycle, raw): Promise<void>;
565
+ ```
566
+
567
+ Parse a host-admitted fact and invoke its lifecycle handler, preserving
568
+ rejection.
569
+
570
+ #### Parameters
571
+
572
+ | Parameter | Type |
573
+ | ----------- | ------------------------------------- |
574
+ | `lifecycle` | [`AppGitLifecycle`](#appgitlifecycle) |
575
+ | `raw` | `unknown` |
576
+
577
+ #### Returns
578
+
579
+ `Promise`\<`void`\>