@jskit-ai/agent-docs 0.1.26 → 0.1.27

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 (29) hide show
  1. package/guide/agent/app-extras/assistant.md +7 -18
  2. package/guide/agent/app-extras/mobile-capacitor.md +374 -0
  3. package/guide/agent/app-extras/realtime.md +2 -1
  4. package/guide/agent/app-setup/a-more-interesting-shell.md +54 -47
  5. package/guide/agent/app-setup/authentication.md +10 -9
  6. package/guide/agent/app-setup/console.md +3 -3
  7. package/guide/agent/app-setup/multi-homing.md +22 -19
  8. package/guide/agent/app-setup/quickstart.md +11 -14
  9. package/guide/agent/app-setup/users.md +3 -3
  10. package/guide/agent/app-setup/working-with-the-jskit-cli.md +5 -4
  11. package/guide/agent/generators/ui-generators.md +29 -23
  12. package/guide/agent/index.md +3 -2
  13. package/package.json +1 -1
  14. package/patterns/page-scaffolding.md +3 -2
  15. package/patterns/placements.md +7 -1
  16. package/reference/autogen/KERNEL_MAP.md +16 -0
  17. package/reference/autogen/README.md +3 -0
  18. package/reference/autogen/packages/assistant.md +1 -0
  19. package/reference/autogen/packages/auth-web.md +20 -1
  20. package/reference/autogen/packages/crud-ui-generator.md +1 -0
  21. package/reference/autogen/packages/google-rewarded-core.md +222 -0
  22. package/reference/autogen/packages/google-rewarded-web.md +71 -0
  23. package/reference/autogen/packages/kernel.md +58 -6
  24. package/reference/autogen/packages/mobile-capacitor.md +76 -0
  25. package/reference/autogen/packages/shell-web.md +13 -0
  26. package/reference/autogen/packages/ui-generator.md +11 -0
  27. package/reference/autogen/packages/users-web.md +0 -1
  28. package/reference/autogen/packages/workspaces-web.md +0 -1
  29. package/reference/autogen/tooling/jskit-cli.md +98 -9
@@ -93,7 +93,8 @@ That is where things such as:
93
93
  - `label`
94
94
  - `order`
95
95
  - `icon`
96
- - a custom `componentToken`
96
+ - `owner`
97
+ - `surfaces`
97
98
 
98
99
  normally get adjusted.
99
100
 
@@ -145,21 +146,12 @@ Use this when the generated page link should go somewhere other than the generat
145
146
  Typical reasons:
146
147
 
147
148
  - you want the page in a different shell menu
148
- - you want the page link inside a specific existing outlet
149
+ - you want the page link inside a specific existing semantic placement
149
150
  - you do not want the link to land in the normal top-level menu
150
151
 
151
152
  For example, if a page should appear in a settings menu rather than the shell drawer, `--link-placement` is the override that says so.
152
153
 
153
- #### `--link-component-token`
154
-
155
- Use this when the page link should render with a different link component than the default inferred one.
156
-
157
- In practice, this often means:
158
-
159
- - using a tab-style link instead of a normal menu link
160
- - using a local custom link token for a special shell section
161
-
162
- This matters most once you start targeting non-default outlets. A settings or tab host may want a different link renderer than the main shell drawer.
154
+ The value should normally be semantic, such as `shell.primary-nav`, `page.section-nav`, or another `area.slot` placement from `jskit list-placements`. Concrete `host:position` outlets remain an escape hatch, not the default authoring path.
163
155
 
164
156
  #### `--link-to`
165
157
 
@@ -330,12 +322,13 @@ But the placement it wrote was **not** another top-level shell link.
330
322
  Instead, it targeted the host outlet:
331
323
 
332
324
  ```text
333
- reports:sub-pages
325
+ page.section-nav
334
326
  ```
335
327
 
336
- and used the tab-link renderer with:
328
+ with the host owner and relative route:
337
329
 
338
330
  ```js
331
+ owner: "reports",
339
332
  to: "./exports"
340
333
  ```
341
334
 
@@ -345,7 +338,7 @@ That is exactly the behavior you want:
345
338
  - `Exports` becomes a child tab under it
346
339
  - the child route renders under the parent instead of becoming another top-level menu entry
347
340
 
348
- This is also why `--link-placement`, `--link-component-token`, and `--link-to` are often unnecessary in the default nested case. Once the host exists, JSKIT already knows the likely child placement target, link renderer, and relative `to` value.
341
+ This is also why `--link-placement` and `--link-to` are often unnecessary in the default nested case. Once the host exists, JSKIT already knows the likely semantic placement, owner, and relative `to` value. The link renderer comes from `src/placementTopology.js`.
349
342
 
350
343
  ## Nested pages under a file-route host
351
344
 
@@ -532,13 +525,15 @@ In the verified throwaway app, after generating `Alerts Widget`, I ran:
532
525
  ```bash
533
526
  npx jskit generate ui-generator outlet \
534
527
  src/components/AlertsWidgetElement.vue \
535
- --target alerts-widget:actions
528
+ --target alerts-widget:actions \
529
+ --placement page.actions
536
530
  ```
537
531
 
538
- That command touched only one file:
532
+ That command touched the Vue file and the topology file:
539
533
 
540
534
  ```text
541
535
  src/components/AlertsWidgetElement.vue
536
+ src/placementTopology.js
542
537
  ```
543
538
 
544
539
  and injected:
@@ -561,13 +556,16 @@ Use `outlet` when you want:
561
556
  - later content to be targetable there
562
557
  - no routed child-page behavior
563
558
 
564
- After adding the outlet, `npx jskit list-placements` showed the new target immediately:
559
+ After adding the outlet, `npx jskit list-placements` showed the new semantic placement immediately:
565
560
 
566
561
  ```text
567
- - alerts-widget:actions [src/components/AlertsWidgetElement.vue]
562
+ - page.actions: ...
563
+ - compact -> alerts-widget:actions
564
+ - medium -> alerts-widget:actions
565
+ - expanded -> alerts-widget:actions
568
566
  ```
569
567
 
570
- So `outlet` is the smallest possible way to make a Vue file part of the placement topology.
568
+ So `outlet` is the smallest possible way to add a concrete recipient and expose it through the public placement topology in the same change.
571
569
 
572
570
  ### When `outlet` is the smaller correct tool
573
571
 
@@ -588,7 +586,7 @@ That is why `outlet` is often the better choice for:
588
586
 
589
587
  If you do **not** need `RouterView` and you do **not** need child routes, `outlet` is usually the cleaner tool.
590
588
 
591
- ### Choosing a good custom `--target`
589
+ ### Choosing a good custom `--target` and `--placement`
592
590
 
593
591
  `--target` should be meaningful to humans, not just syntactically valid.
594
592
 
@@ -611,12 +609,20 @@ custom-area:slot1
611
609
 
612
610
  because the meaningful target name will later show up in:
613
611
 
614
- - `jskit list-placements`
615
- - placement entries
612
+ - `jskit list-placements --concrete`
613
+ - topology mappings
616
614
  - future generator commands
617
615
 
618
616
  So the target should describe the UI seam you are creating, not just satisfy the `host:position` format.
619
617
 
618
+ `--placement` is the public authoring target that other entries should use. It should be semantic, such as:
619
+
620
+ ```text
621
+ page.actions
622
+ ```
623
+
624
+ Adding an outlet without adding a semantic mapping would leave a low-level recipient that normal generators and humans will not discover by default.
625
+
620
626
  ## `add-subpages` versus `outlet`
621
627
 
622
628
  This is the distinction that most often causes hesitation.
@@ -4,7 +4,7 @@
4
4
 
5
5
  This guide is the main hands-on path through JSKIT.
6
6
 
7
- It now starts with a fast reproducible Quickstart, then steps back to the smaller scaffold-first chapters that explain how the app is assembled piece by piece. After that, it introduces the database-backed users layer, expands into console and workspace-aware app structure, and adds a small `App extras` section for optional runtime packages such as realtime and assistant. Finally, the guide breaks out generator-specific workflows into their own section.
7
+ It now starts with a fast reproducible Quickstart, then steps back to the smaller scaffold-first chapters that explain how the app is assembled piece by piece. After that, it introduces the database-backed users layer, expands into console and workspace-aware app structure, and adds a small `App extras` section for optional runtime packages such as the Android Capacitor shell, realtime, and assistant. Finally, the guide breaks out generator-specific workflows into their own section.
8
8
 
9
9
  ## Table of Contents
10
10
 
@@ -22,6 +22,7 @@ It now starts with a fast reproducible Quickstart, then steps back to the smalle
22
22
 
23
23
  ### App Extras
24
24
 
25
+ - [Mobile Capacitor](/guide/app-extras/mobile-capacitor)
25
26
  - [Realtime](/guide/app-extras/realtime)
26
27
  - [Assistant](/guide/app-extras/assistant)
27
28
 
@@ -36,6 +37,6 @@ It now starts with a fast reproducible Quickstart, then steps back to the smalle
36
37
 
37
38
  - Start with `Quickstart` if you want the fastest route to a real workspace-enabled app and the first page-extension patterns.
38
39
  - Start with the rest of `App Setup` if you want to understand the base scaffold layer by layer.
39
- - Use `App Extras` once the base app structure is in place and you want optional runtime packages.
40
+ - Use `App Extras` once the base app structure is in place and you want optional runtime packages such as the Android shell, realtime, or assistant.
40
41
  - Jump into `Generators` if you already understand the runtime packages and want app-owned scaffolding workflows.
41
42
  - Inside `Generators`, read `CRUD Generators` before `Advanced CRUDs`: the first chapter teaches the workflow, and the second explains the generated anatomy and customization points.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/agent-docs",
3
- "version": "0.1.26",
3
+ "version": "0.1.27",
4
4
  "description": "Distributed JSKIT agent workflows, guides, and generated reference maps.",
5
5
  "type": "module",
6
6
  "files": [
@@ -18,8 +18,9 @@ Rules:
18
18
 
19
19
  - Default to `jskit generate ui-generator page ...` for a new app-owned non-CRUD route page.
20
20
  - Let the generator create both the page file and the matching `src/placement.js` entry, then adapt the generated output if needed.
21
- - If the page link belongs in a non-default outlet, discover the outlet first with `jskit list-placements` and pass `--link-placement`.
22
- - If the page sits under an existing routed host, check whether `ui-generator page` can infer the correct child placement before writing a custom link by hand.
21
+ - If the page link belongs in a non-default semantic slot, discover the public placement first with `jskit list-placements` and pass `--link-placement`.
22
+ - If you need the concrete outlet inventory, use `jskit list-placements --concrete`; do not target concrete outlets by default.
23
+ - If the page sits under an existing routed host, check whether `ui-generator page` can infer the correct `page.section-nav` owner before writing a custom link by hand.
23
24
  - If you do not use `ui-generator page`, state exactly why the generator does not fit before editing code.
24
25
  - For a small placeholder route inside an existing route family, update the workboard rather than rewriting the blueprint unless the durable route or surface plan changed.
25
26
 
@@ -11,7 +11,9 @@ Use when:
11
11
  Check first:
12
12
 
13
13
  - app `src/placement.js`
14
+ - app `src/placementTopology.js`
14
15
  - package placement contributions
16
+ - package placement topology
15
17
  - linked component token props
16
18
 
17
19
  Rules:
@@ -20,9 +22,13 @@ Rules:
20
22
  - When asked to change a tab or menu icon, inspect placement metadata before editing page components.
21
23
  - Look at placement `props`, especially fields such as `icon`, `prependIcon`, `appendIcon`, or props passed into the linked component token.
22
24
  - If the visible entry is contributed by a package, update the owning package placement contribution instead of patching a local page component.
23
- - If the request is really about where a link appears, check the placement `target`, `surfaces`, `order`, and `when` fields before changing UI markup.
25
+ - If the request is really about where a link appears, check the placement `target`, `owner`, `surfaces`, `order`, and `when` fields before changing UI markup.
26
+ - Placement targets should be semantic by default, such as `shell.primary-nav` or `page.section-nav`; concrete `host:position` outlets are the advanced escape hatch.
27
+ - Renderer choice for semantic `kind: "link"` placements belongs in topology, not in each placement entry.
28
+ - Adding a public concrete `ShellOutlet` should happen with a matching semantic topology entry in the same change.
24
29
 
25
30
  Avoid:
26
31
 
27
32
  - editing the routed page just to change a shell/tab/menu icon that is actually placement-owned
28
33
  - assuming a rendered tab label/icon lives in the page component
34
+ - adding a public `ShellOutlet` without also exposing a semantic placement that maps to it
@@ -174,6 +174,10 @@ Exports
174
174
  - `normalizeRecordId(value, { fallback = null } = {})`
175
175
  - `normalizeOpaqueId(value, { fallback = null } = {})`
176
176
  - `normalizeOneOf(value, allowedValues = [], fallback = "")`
177
+ - `normalizeMobileAssetMode(value = "", { fallback = "bundled" } = {})`
178
+ - `normalizeMobileCallbackPath(value = "", { fallback = "/auth/login" } = {})`
179
+ - `normalizeMobileConfig(source = {})`
180
+ - `normalizeMobileStrategy(value = "", { fallback = "" } = {})`
177
181
  - `ensureNonEmptyText(value, label = "value")`
178
182
 
179
183
  ### `support/permissions.js`
@@ -229,14 +233,26 @@ Local functions
229
233
 
230
234
  ### `support/shellLayoutTargets.js`
231
235
  Exports
236
+ - `PLACEMENT_LAYOUT_CLASSES`
232
237
  - `describeShellOutletTargets(targets = [])`
233
238
  - `discoverShellOutletTargetsFromVueSource(source = "", { context = "shell layout" } = {})`
234
239
  - `findShellOutletTargetById(targets = [], targetId = "")`
240
+ - `normalizePlacementKind(value = "")`
241
+ - `normalizePlacementLayoutClass(value = "")`
242
+ - `normalizePlacementOwnerId(value = "")`
243
+ - `normalizePlacementSurfaceId(value = "")`
244
+ - `normalizePlacementSurfaces(value)`
245
+ - `normalizePlacementTopologyDefinition(value = {}, { context = "placement topology" } = {})`
246
+ - `normalizePlacementTopologyEntry(value = {}, { context = "placement topology" } = {})`
247
+ - `normalizePlacementTopologyVariant(value = {}, { context = "placement topology variant" } = {})`
248
+ - `normalizeSemanticPlacementId(value = "")`
235
249
  - `normalizeShellOutletTargetId(value = "")`
236
250
  - `normalizeShellOutletTargetRecord(value = {}, { context = "shell layout" } = {})`
251
+ - `resolvePlacementTargetReference(value = "")`
237
252
  - `resolveShellOutletTargetParts({ target = "" } = {})`
238
253
  Local functions
239
254
  - `parseTagAttributes(attributesSource = "")`
255
+ - `normalizePlacementRenderers(value = {})`
240
256
  - `isDefaultAttributeEnabled(value)`
241
257
 
242
258
  ### `support/sorting.js`
@@ -23,9 +23,12 @@ Startup navigation stays in `KERNEL_MAP.md`.
23
23
  - [database-runtime-mysql](/packages/agent-docs/reference/autogen/packages/database-runtime-mysql.md)
24
24
  - [database-runtime-postgres](/packages/agent-docs/reference/autogen/packages/database-runtime-postgres.md)
25
25
  - [feature-server-generator](/packages/agent-docs/reference/autogen/packages/feature-server-generator.md)
26
+ - [google-rewarded-core](/packages/agent-docs/reference/autogen/packages/google-rewarded-core.md)
27
+ - [google-rewarded-web](/packages/agent-docs/reference/autogen/packages/google-rewarded-web.md)
26
28
  - [http-runtime](/packages/agent-docs/reference/autogen/packages/http-runtime.md)
27
29
  - [json-rest-api-core](/packages/agent-docs/reference/autogen/packages/json-rest-api-core.md)
28
30
  - [kernel](/packages/agent-docs/reference/autogen/packages/kernel.md)
31
+ - [mobile-capacitor](/packages/agent-docs/reference/autogen/packages/mobile-capacitor.md)
29
32
  - [realtime](/packages/agent-docs/reference/autogen/packages/realtime.md)
30
33
  - [resource-core](/packages/agent-docs/reference/autogen/packages/resource-core.md)
31
34
  - [resource-crud-core](/packages/agent-docs/reference/autogen/packages/resource-crud-core.md)
@@ -27,6 +27,7 @@ Exports
27
27
  - `renderAssistantPageSummary(pageTarget = {}, { pageAlreadyExisted = false, pageOverwritten = false } = {})`
28
28
  Local functions
29
29
  - `resolveLinkToPropLine(linkTo = "")`
30
+ - `resolveOwnerLine(owner = "")`
30
31
  - `resolveTemplateFilePath(relativePath = "")`
31
32
 
32
33
  ### `src/server/subcommands/page.js`
@@ -51,7 +51,7 @@ Local functions
51
51
 
52
52
  ### `src/client/composables/loginView/useLoginViewActions.js`
53
53
  Exports
54
- - `useLoginViewActions({ state, validation, queryClient, errorRuntime } = {})`
54
+ - `useLoginViewActions({ state, validation, queryClient, errorRuntime, oauthLaunchClient = null } = {})`
55
55
 
56
56
  ### `src/client/composables/loginView/useLoginViewState.js`
57
57
  Exports
@@ -84,6 +84,9 @@ Exports
84
84
  - `AuthProfileMenuLinkItem`
85
85
  - `useAuthStore`
86
86
  - `useAuthGuardRuntime`
87
+ - `completeOAuthCallbackFromCurrentLocation`
88
+ - `completeOAuthCallbackFromUrl`
89
+ - `readOAuthCallbackParamsFromUrl`
87
90
  - `routeComponents`
88
91
  - `clientProviders`
89
92
 
@@ -152,9 +155,25 @@ Exports
152
155
  ### `src/client/runtime/inject.js`
153
156
  Exports
154
157
  - `AUTH_GUARD_RUNTIME_INJECTION_KEY`
158
+ - `AUTH_OAUTH_LAUNCH_CLIENT_INJECTION_KEY`
155
159
  - `EMPTY_AUTH_GUARD_STATE`
156
160
  - `EMPTY_AUTH_GUARD_RUNTIME`
157
161
  - `useAuthGuardRuntime({ required = false } = {})`
162
+ - `useAuthOAuthLaunchClient({ required = false } = {})`
163
+
164
+ ### `src/client/runtime/oauthCallbackRuntime.js`
165
+ Exports
166
+ - `completeOAuthCallbackFromCurrentLocation(options = {})`
167
+ - `completeOAuthCallbackFromUrl({ url = "", fallbackReturnTo = "/", allowedReturnToOrigins = [], defaultProvider = "", request = authHttpRequest, refreshSession = async () => null } = {})`
168
+ - `readOAuthCallbackParamsFromUrl(url = "")`
169
+ Local functions
170
+ - `parseCallbackUrl(url = "")`
171
+ - `buildOAuthCompletePayload({ callbackParams = null, provider = "", hasSessionPair = false } = {})`
172
+
173
+ ### `src/client/runtime/oauthLaunchClient.js`
174
+ Exports
175
+ - `createBrowserOAuthLaunchClient({ location = null } = {})`
176
+ - `isAuthOAuthLaunchClient(value = null)`
158
177
 
159
178
  ### `src/client/runtime/useLoginView.js`
160
179
  Exports
@@ -46,6 +46,7 @@ Local functions
46
46
  - `resolveResourceLabels(namespace = "", pageTarget = {})`
47
47
  - `resolveTargetRootRelativeRoutePath(pageTarget = {})`
48
48
  - `resolveMenuToPropLine(linkTo = "")`
49
+ - `resolveMenuOwnerLine(owner = "")`
49
50
  - `resolveCrudRelativePath(namespace = "")`
50
51
  - `buildListParentTitleImportLine(parentTitleMode = "contextual")`
51
52
  - `buildListHeadingTitleSetup({ parentTitleMode = "contextual", resourceNamespace = "", routeTitle = "Records" } = {})`
@@ -0,0 +1,222 @@
1
+ # packages/google-rewarded-core
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/google-rewarded-core`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/google-rewarded-core/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `test/`, `tests/`, `__tests__/`, `*.test.*`, `*.spec.*`, `*.vitest.*`, `node_modules/`, `dist/`, `coverage/`, `docs/`, `LEGACY/`, `.vitepress/cache/`, `.vitepress/dist/`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/server/actions.js`
18
+ Exports
19
+ - `ACTION_CURRENT`
20
+ - `ACTION_START`
21
+ - `ACTION_GRANT`
22
+ - `ACTION_CLOSE`
23
+ - `googleRewardedActions`
24
+
25
+ ### `src/server/GoogleRewardedCoreProvider.js`
26
+ Exports
27
+ - `GoogleRewardedCoreProvider`
28
+
29
+ ### `src/server/inputSchemas.js`
30
+ Exports
31
+ - `currentQueryInputValidator`
32
+ - `startCommandInputValidator`
33
+ - `grantCommandInputValidator`
34
+ - `closeCommandInputValidator`
35
+ - `currentStateOutputValidator`
36
+ - `startGateOutputValidator`
37
+ - `grantRewardOutputValidator`
38
+ - `closeSessionOutputValidator`
39
+ Local functions
40
+ - `createGateStateOutputValidator({ includeSession = false } = {})`
41
+
42
+ ### `src/server/providerConfigs/actions.js`
43
+ Exports
44
+ - `createActions({ surface } = {})`
45
+
46
+ ### `src/server/providerConfigs/GoogleRewardedProviderConfigsProvider.js`
47
+ Exports
48
+ - `GoogleRewardedProviderConfigsProvider`
49
+ Local functions
50
+ - `resolveCrudPolicyFromApp(app)`
51
+
52
+ ### `src/server/providerConfigs/registerRoutes.js`
53
+ Exports
54
+ - `registerRoutes(app, { routeOwnershipFilter = "public", routeSurface = "", routeRelativePath = "" } = {})`
55
+
56
+ ### `src/server/providerConfigs/repository.js`
57
+ Exports
58
+ - `createRepository({ api, knex } = {})`
59
+
60
+ ### `src/server/providerConfigs/service.js`
61
+ Exports
62
+ - `createService({ googleRewardedProviderConfigsRepository } = {})`
63
+ Local functions
64
+ - `return404IfNotFound(document = null)`
65
+
66
+ ### `src/server/registerRoutes.js`
67
+ Exports
68
+ - `registerRoutes(app, { routeOwnershipFilter = "workspace_user", routeSurface = "app", routeRelativePath = "google-rewarded" } = {})`
69
+ Local functions
70
+ - `createWorkflowResponses(outputValidator)`
71
+
72
+ ### `src/server/rules/actions.js`
73
+ Exports
74
+ - `createActions({ surface } = {})`
75
+
76
+ ### `src/server/rules/GoogleRewardedRulesProvider.js`
77
+ Exports
78
+ - `GoogleRewardedRulesProvider`
79
+ Local functions
80
+ - `resolveCrudPolicyFromApp(app)`
81
+
82
+ ### `src/server/rules/registerRoutes.js`
83
+ Exports
84
+ - `registerRoutes(app, { routeOwnershipFilter = "public", routeSurface = "", routeRelativePath = "" } = {})`
85
+
86
+ ### `src/server/rules/repository.js`
87
+ Exports
88
+ - `createRepository({ api, knex } = {})`
89
+
90
+ ### `src/server/rules/service.js`
91
+ Exports
92
+ - `createService({ googleRewardedRulesRepository } = {})`
93
+ Local functions
94
+ - `return404IfNotFound(document = null)`
95
+
96
+ ### `src/server/service.js`
97
+ Exports
98
+ - `createService({ googleRewardedRulesRepository, googleRewardedProviderConfigsRepository, googleRewardedWatchSessionsRepository, googleRewardedUnlockReceiptsRepository } = {})`
99
+ Local functions
100
+ - `resolveActionUser(context, input)`
101
+ - `normalizeRecordList(document = null)`
102
+ - `normalizeRecord(document = null)`
103
+ - `normalizeGateKey(value = "")`
104
+ - `normalizeSurface(value = "", { fallback = GOOGLE_REWARDED_SURFACE } = {})`
105
+ - `toIsoOrNull(value = null)`
106
+ - `parseDate(value = null)`
107
+ - `addMinutes(date, minutes)`
108
+ - `startOfUtcDay(date)`
109
+ - `requireActor(context, input)`
110
+ - `requireWorkspaceSlug(input = {})`
111
+ - `requireGateKey(input = {})`
112
+ - `formatRule(rule = null)`
113
+ - `formatProviderConfig(record = null)`
114
+ - `formatWatchSession(record = null)`
115
+ - `formatUnlockReceipt(record = null)`
116
+ - `isFutureDate(value = null, now = new Date())`
117
+
118
+ ### `src/server/support/requireGoogleRewardedUnlock.js`
119
+ Exports
120
+ - `requireGoogleRewardedUnlock(googleRewardedService, input = {}, { context = null, requireConfigured = false, errorCode = "", errorMessage = "" } = {})`
121
+ Local functions
122
+ - `normalizeReason(value = "")`
123
+ - `isUnlockSatisfied(gateState = null)`
124
+ - `hasBooleanGateFlag(gateState, key)`
125
+ - `assertWellFormedGateState(gateState = null)`
126
+ - `isConfigurationBypassAllowed(gateState = null, requireConfigured = false)`
127
+ - `createRewardedGateError(gateState = null, { errorCode = "", errorMessage = "" } = {})`
128
+
129
+ ### `src/server/unlockReceipts/actions.js`
130
+ Exports
131
+ - `createActions({ surface } = {})`
132
+
133
+ ### `src/server/unlockReceipts/GoogleRewardedUnlockReceiptsProvider.js`
134
+ Exports
135
+ - `GoogleRewardedUnlockReceiptsProvider`
136
+ Local functions
137
+ - `resolveCrudPolicyFromApp(app)`
138
+
139
+ ### `src/server/unlockReceipts/registerRoutes.js`
140
+ Exports
141
+ - `registerRoutes(app, { routeOwnershipFilter = "public", routeSurface = "", routeRelativePath = "" } = {})`
142
+
143
+ ### `src/server/unlockReceipts/repository.js`
144
+ Exports
145
+ - `createRepository({ api, knex } = {})`
146
+
147
+ ### `src/server/unlockReceipts/service.js`
148
+ Exports
149
+ - `createService({ googleRewardedUnlockReceiptsRepository } = {})`
150
+ Local functions
151
+ - `return404IfNotFound(document = null)`
152
+
153
+ ### `src/server/watchSessions/actions.js`
154
+ Exports
155
+ - `createActions({ surface } = {})`
156
+
157
+ ### `src/server/watchSessions/GoogleRewardedWatchSessionsProvider.js`
158
+ Exports
159
+ - `GoogleRewardedWatchSessionsProvider`
160
+ Local functions
161
+ - `resolveCrudPolicyFromApp(app)`
162
+
163
+ ### `src/server/watchSessions/registerRoutes.js`
164
+ Exports
165
+ - `registerRoutes(app, { routeOwnershipFilter = "public", routeSurface = "", routeRelativePath = "" } = {})`
166
+
167
+ ### `src/server/watchSessions/repository.js`
168
+ Exports
169
+ - `createRepository({ api, knex } = {})`
170
+
171
+ ### `src/server/watchSessions/service.js`
172
+ Exports
173
+ - `createService({ googleRewardedWatchSessionsRepository } = {})`
174
+ Local functions
175
+ - `return404IfNotFound(document = null)`
176
+
177
+ ### `src/shared/googleRewardedProviderConfigResource.js`
178
+ Exports
179
+ - `resource`
180
+
181
+ ### `src/shared/googleRewardedRuleResource.js`
182
+ Exports
183
+ - `resource`
184
+
185
+ ### `src/shared/googleRewardedUnlockReceiptResource.js`
186
+ Exports
187
+ - `resource`
188
+
189
+ ### `src/shared/googleRewardedWatchSessionResource.js`
190
+ Exports
191
+ - `resource`
192
+
193
+ ### `src/shared/index.js`
194
+ Exports
195
+ - `googleRewardedRuleResource`
196
+ - `googleRewardedProviderConfigResource`
197
+ - `googleRewardedWatchSessionResource`
198
+ - `googleRewardedUnlockReceiptResource`
199
+
200
+ ### templates
201
+
202
+ ### `templates/migrations/google_rewarded_provider_configs_initial.cjs`
203
+ Exports
204
+ - None
205
+
206
+ ### `templates/migrations/google_rewarded_rules_initial.cjs`
207
+ Exports
208
+ - None
209
+
210
+ ### `templates/migrations/google_rewarded_unlock_receipts_initial.cjs`
211
+ Exports
212
+ - None
213
+
214
+ ### `templates/migrations/google_rewarded_watch_sessions_initial.cjs`
215
+ Exports
216
+ - None
217
+
218
+ ### root
219
+
220
+ ### `package.descriptor.mjs`
221
+ Exports
222
+ - None
@@ -0,0 +1,71 @@
1
+ # packages/google-rewarded-web
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/google-rewarded-web`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/google-rewarded-web/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `test/`, `tests/`, `__tests__/`, `*.test.*`, `*.spec.*`, `*.vitest.*`, `node_modules/`, `dist/`, `coverage/`, `docs/`, `LEGACY/`, `.vitepress/cache/`, `.vitepress/dist/`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/client/components/GoogleRewardedGateHost.vue`
18
+ Exports
19
+ - None
20
+ Local functions
21
+ - `handleWatchClick()`
22
+ - `handleCancelClick()`
23
+ - `handleDismissError()`
24
+
25
+ ### `src/client/composables/useGoogleRewardedRuntime.js`
26
+ Exports
27
+ - `useGoogleRewardedRuntime()`
28
+
29
+ ### `src/client/index.js`
30
+ Exports
31
+ - `GoogleRewardedClientProvider`
32
+ - `GoogleRewardedGateHost`
33
+ - `GOOGLE_REWARDED_RUNTIME_INJECTION_KEY`
34
+ - `createGoogleRewardedRuntime`
35
+ - `useGoogleRewardedRuntime`
36
+
37
+ ### `src/client/providers/GoogleRewardedClientProvider.js`
38
+ Exports
39
+ - `GoogleRewardedClientProvider`
40
+
41
+ ### `src/client/runtime/googleRewardedRuntime.js`
42
+ Exports
43
+ - `GOOGLE_REWARDED_RUNTIME_INJECTION_KEY`
44
+ - `createGoogleRewardedRuntime()`
45
+ Local functions
46
+ - `createInitialState()`
47
+ - `applyState(target, source)`
48
+ - `normalizeWorkspaceSlug(value = "")`
49
+ - `isWellFormedGateState(gateState = null)`
50
+ - `buildApiPath(workspaceSlug = "", action = "", query = null)`
51
+ - `ensureGooglePublisherTagLoaded()`
52
+ - `launchRewardedSlot({ adUnitPath = "", onReady = null, onGranted = null, onClosed = null, onUnavailable = null } = {})`
53
+ - `requestCurrent(input = {})`
54
+
55
+ ### `src/index.js`
56
+ Exports
57
+ - None
58
+
59
+ ### `src/server/index.js`
60
+ Exports
61
+ - None
62
+
63
+ ### `src/shared/index.js`
64
+ Exports
65
+ - None
66
+
67
+ ### root
68
+
69
+ ### `package.descriptor.mjs`
70
+ Exports
71
+ - None