aimeat 1.33.2 → 1.35.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/dist/locales/en.json +437 -15
- package/dist/locales/fi.json +437 -15
- package/dist/public/cortex-bundled/aimeat-charts.js +3 -3
- package/dist/public/cortex-bundled/aimeat-charts.yaml +3 -3
- package/dist/public/cortex-bundled/aimeat-i18n.js +123 -0
- package/dist/public/cortex-bundled/aimeat-i18n.yaml +64 -0
- package/dist/public/css/views/landing.css +2 -0
- package/dist/public/css/views/secretary.css +464 -2
- package/dist/public/js/i18n.js +9 -0
- package/dist/public/js/services/apps.js +4 -2
- package/dist/public/js/services/memory.js +9 -3
- package/dist/public/js/services/offers.js +1 -1
- package/dist/public/js/services/organisms.js +49 -17
- package/dist/public/js/services/secretary-helpers.js +266 -17
- package/dist/public/js/services/secretary-policy.js +28 -2
- package/dist/public/js/services/secretary-rules.js +70 -0
- package/dist/public/js/theme.js +20 -0
- package/dist/public/lib/VENDORED-STYLING.md +31 -0
- package/dist/public/lib/aimeat-daisyui-bridge.css +48 -0
- package/dist/public/lib/chartjs@4.js +14 -0
- package/dist/public/lib/daisyui@5.css +7 -0
- package/dist/public/lib/tailwindcss@4.js +8 -0
- package/dist/public/llms-template.txt +9 -6
- package/dist/public/showroom.html +104 -0
- package/dist/public/showroom.js +247 -0
- package/dist/public/spa.html +18 -16
- package/dist/public/views/aimeat-os.js +3 -2
- package/dist/public/views/landing.js +50 -6
- package/dist/public/views/profile/agents/agent-card.js +13 -4
- package/dist/public/views/profile/agents/state-detector.js +6 -0
- package/dist/public/views/profile/agents/tab-integration.js +11 -2
- package/dist/public/views/profile/apps-tab.js +46 -0
- package/dist/public/views/profile/extensions-tab.js +4 -0
- package/dist/public/views/profile/inbox-tab.js +1 -1
- package/dist/public/views/profile/landing-page.js +8 -3
- package/dist/public/views/profile/memory-tab.js +37 -6
- package/dist/public/views/profile/organisms/home.js +32 -0
- package/dist/public/views/profile/organisms/workspace-list.js +36 -5
- package/dist/public/views/profile/organisms/workspace.js +29 -4
- package/dist/public/views/profile/organisms-tab.js +61 -8
- package/dist/public/views/secretary/calendar.js +327 -0
- package/dist/public/views/secretary/cards-reach.js +16 -17
- package/dist/public/views/secretary/cards.js +217 -79
- package/dist/public/views/secretary/dashboard.js +617 -0
- package/dist/public/views/secretary/quality.js +156 -0
- package/dist/public/views/secretary/use-autonomy.js +17 -2
- package/dist/public/views/secretary/use-freshness.js +50 -0
- package/dist/public/views/secretary/use-intake.js +23 -4
- package/dist/public/views/secretary/use-layout.js +122 -0
- package/dist/public/views/secretary/use-quick-actions.js +98 -0
- package/dist/public/views/secretary/use-specialists.js +103 -0
- package/dist/public/views/secretary/use-triggers.js +159 -0
- package/dist/public/views/secretary/use-whats-next.js +340 -0
- package/dist/public/views/secretary/workflow-design.js +112 -0
- package/dist/public/views/secretary.js +836 -44
- package/dist/scripts/check-no-max-tokens.d.ts +2 -0
- package/dist/scripts/check-no-max-tokens.d.ts.map +1 -0
- package/dist/scripts/check-no-max-tokens.js +71 -0
- package/dist/scripts/check-no-max-tokens.js.map +1 -0
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts +2 -0
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.js +9 -1
- package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
- package/dist/src/cli/connect/onboarding-prompt.d.ts +3 -0
- package/dist/src/cli/connect/onboarding-prompt.d.ts.map +1 -1
- package/dist/src/cli/connect/onboarding-prompt.js +10 -3
- package/dist/src/cli/connect/onboarding-prompt.js.map +1 -1
- package/dist/src/data/aimeat-iam-package.d.ts +25 -0
- package/dist/src/data/aimeat-iam-package.d.ts.map +1 -0
- package/dist/src/data/aimeat-iam-package.js +312 -0
- package/dist/src/data/aimeat-iam-package.js.map +1 -0
- package/dist/src/data/aimeat-marketplace-package.d.ts +25 -0
- package/dist/src/data/aimeat-marketplace-package.d.ts.map +1 -0
- package/dist/src/data/aimeat-marketplace-package.js +231 -0
- package/dist/src/data/aimeat-marketplace-package.js.map +1 -0
- package/dist/src/data/app-templates.d.ts +48 -0
- package/dist/src/data/app-templates.d.ts.map +1 -0
- package/dist/src/data/app-templates.js +856 -0
- package/dist/src/data/app-templates.js.map +1 -0
- package/dist/src/data/example-packages.d.ts.map +1 -1
- package/dist/src/data/example-packages.js +3 -1
- package/dist/src/data/example-packages.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +689 -7
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/generated/prisma-postgres/edge.js +10 -3
- package/dist/src/generated/prisma-postgres/index-browser.js +7 -0
- package/dist/src/generated/prisma-postgres/index.d.ts +205 -2
- package/dist/src/generated/prisma-postgres/index.js +10 -3
- package/dist/src/generated/prisma-postgres/package.json +1 -1
- package/dist/src/generated/prisma-postgres/schema.prisma +23 -13
- package/dist/src/generated/prisma-postgres/wasm.js +10 -3
- package/dist/src/mcp/agent-onboarding.d.ts +4 -0
- package/dist/src/mcp/agent-onboarding.d.ts.map +1 -1
- package/dist/src/mcp/agent-onboarding.js +28 -2
- package/dist/src/mcp/agent-onboarding.js.map +1 -1
- package/dist/src/mcp/annotations.d.ts.map +1 -1
- package/dist/src/mcp/annotations.js +1 -0
- package/dist/src/mcp/annotations.js.map +1 -1
- package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions.js +16 -1
- package/dist/src/mcp/catalog/definitions.js.map +1 -1
- package/dist/src/mcp/catalog/surfaces.js +3 -3
- package/dist/src/mcp/catalog/surfaces.js.map +1 -1
- package/dist/src/mcp/index.d.ts +3 -0
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +11 -0
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/mcp/organisms.d.ts.map +1 -1
- package/dist/src/mcp/organisms.js +48 -8
- package/dist/src/mcp/organisms.js.map +1 -1
- package/dist/src/mcp/workspaces.d.ts.map +1 -1
- package/dist/src/mcp/workspaces.js +6 -4
- package/dist/src/mcp/workspaces.js.map +1 -1
- package/dist/src/models/agent-onboarding-schemas.d.ts +47 -0
- package/dist/src/models/agent-onboarding-schemas.d.ts.map +1 -1
- package/dist/src/models/agent-onboarding-schemas.js +117 -0
- package/dist/src/models/agent-onboarding-schemas.js.map +1 -1
- package/dist/src/models/offer-schemas.d.ts +8 -8
- package/dist/src/routes/agent-onboarding.d.ts +5 -0
- package/dist/src/routes/agent-onboarding.d.ts.map +1 -1
- package/dist/src/routes/agent-onboarding.js +21 -2
- package/dist/src/routes/agent-onboarding.js.map +1 -1
- package/dist/src/routes/ai.d.ts +8 -4
- package/dist/src/routes/ai.d.ts.map +1 -1
- package/dist/src/routes/ai.js +38 -14
- package/dist/src/routes/ai.js.map +1 -1
- package/dist/src/routes/app-grants.d.ts +2 -0
- package/dist/src/routes/app-grants.d.ts.map +1 -1
- package/dist/src/routes/app-grants.js +7 -1
- package/dist/src/routes/app-grants.js.map +1 -1
- package/dist/src/routes/app-templates.d.ts +16 -0
- package/dist/src/routes/app-templates.d.ts.map +1 -0
- package/dist/src/routes/app-templates.js +40 -0
- package/dist/src/routes/app-templates.js.map +1 -0
- package/dist/src/routes/apps.d.ts.map +1 -1
- package/dist/src/routes/apps.js +55 -5
- package/dist/src/routes/apps.js.map +1 -1
- package/dist/src/routes/auth.d.ts +3 -0
- package/dist/src/routes/auth.d.ts.map +1 -1
- package/dist/src/routes/auth.js +9 -4
- package/dist/src/routes/auth.js.map +1 -1
- package/dist/src/routes/bootstrap.d.ts.map +1 -1
- package/dist/src/routes/bootstrap.js +1 -0
- package/dist/src/routes/bootstrap.js.map +1 -1
- package/dist/src/routes/generator.d.ts.map +1 -1
- package/dist/src/routes/generator.js +3 -2
- package/dist/src/routes/generator.js.map +1 -1
- package/dist/src/routes/lib-ai.d.ts +0 -1
- package/dist/src/routes/lib-ai.d.ts.map +1 -1
- package/dist/src/routes/lib-ai.js +13 -6
- package/dist/src/routes/lib-ai.js.map +1 -1
- package/dist/src/routes/lib-header.d.ts +2 -0
- package/dist/src/routes/lib-header.d.ts.map +1 -1
- package/dist/src/routes/lib-header.js +7 -16
- package/dist/src/routes/lib-header.js.map +1 -1
- package/dist/src/routes/lib-markdown.d.ts +18 -0
- package/dist/src/routes/lib-markdown.d.ts.map +1 -0
- package/dist/src/routes/lib-markdown.js +236 -0
- package/dist/src/routes/lib-markdown.js.map +1 -0
- package/dist/src/routes/libs.d.ts +22 -0
- package/dist/src/routes/libs.d.ts.map +1 -1
- package/dist/src/routes/libs.js +133 -10
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/memory.d.ts.map +1 -1
- package/dist/src/routes/memory.js +21 -2
- package/dist/src/routes/memory.js.map +1 -1
- package/dist/src/routes/openrouter.d.ts +4 -0
- package/dist/src/routes/openrouter.d.ts.map +1 -1
- package/dist/src/routes/openrouter.js +17 -0
- package/dist/src/routes/openrouter.js.map +1 -1
- package/dist/src/routes/organisms.d.ts.map +1 -1
- package/dist/src/routes/organisms.js +107 -7
- package/dist/src/routes/organisms.js.map +1 -1
- package/dist/src/routes/portal.d.ts +9 -0
- package/dist/src/routes/portal.d.ts.map +1 -1
- package/dist/src/routes/portal.js +1 -1
- package/dist/src/routes/portal.js.map +1 -1
- package/dist/src/routes/public-stats.d.ts +3 -0
- package/dist/src/routes/public-stats.d.ts.map +1 -1
- package/dist/src/routes/public-stats.js +9 -2
- package/dist/src/routes/public-stats.js.map +1 -1
- package/dist/src/routes/secretary.d.ts +34 -0
- package/dist/src/routes/secretary.d.ts.map +1 -0
- package/dist/src/routes/secretary.js +311 -0
- package/dist/src/routes/secretary.js.map +1 -0
- package/dist/src/routes/specialists.d.ts.map +1 -1
- package/dist/src/routes/specialists.js +21 -0
- package/dist/src/routes/specialists.js.map +1 -1
- package/dist/src/routes/subdomains.js +1 -1
- package/dist/src/routes/subdomains.js.map +1 -1
- package/dist/src/routes/workflows.d.ts +9 -3
- package/dist/src/routes/workflows.d.ts.map +1 -1
- package/dist/src/routes/workflows.js +9 -3
- package/dist/src/routes/workflows.js.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +4 -0
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/service-init.js +7 -0
- package/dist/src/server-bootstrap/service-init.js.map +1 -1
- package/dist/src/server-bootstrap/static-files.d.ts +4 -0
- package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
- package/dist/src/server-bootstrap/static-files.js +18 -0
- package/dist/src/server-bootstrap/static-files.js.map +1 -1
- package/dist/src/services/archive.d.ts +74 -0
- package/dist/src/services/archive.d.ts.map +1 -0
- package/dist/src/services/archive.js +132 -0
- package/dist/src/services/archive.js.map +1 -0
- package/dist/src/services/cortex-seeder.d.ts +4 -1
- package/dist/src/services/cortex-seeder.d.ts.map +1 -1
- package/dist/src/services/cortex-seeder.js +25 -6
- package/dist/src/services/cortex-seeder.js.map +1 -1
- package/dist/src/services/directory.d.ts.map +1 -1
- package/dist/src/services/directory.js +3 -2
- package/dist/src/services/directory.js.map +1 -1
- package/dist/src/services/generator-prompt-seeds.d.ts.map +1 -1
- package/dist/src/services/generator-prompt-seeds.js +5 -4
- package/dist/src/services/generator-prompt-seeds.js.map +1 -1
- package/dist/src/services/message-send.d.ts.map +1 -1
- package/dist/src/services/message-send.js +14 -0
- package/dist/src/services/message-send.js.map +1 -1
- package/dist/src/services/onboarding-guide.d.ts +53 -0
- package/dist/src/services/onboarding-guide.d.ts.map +1 -0
- package/dist/src/services/onboarding-guide.js +81 -0
- package/dist/src/services/onboarding-guide.js.map +1 -0
- package/dist/src/services/organism-search.d.ts +6 -2
- package/dist/src/services/organism-search.d.ts.map +1 -1
- package/dist/src/services/organism-search.js +2 -2
- package/dist/src/services/organism-search.js.map +1 -1
- package/dist/src/services/owner-memory.d.ts +1 -0
- package/dist/src/services/owner-memory.d.ts.map +1 -1
- package/dist/src/services/owner-memory.js.map +1 -1
- package/dist/src/services/owner-session.d.ts +1 -0
- package/dist/src/services/owner-session.d.ts.map +1 -1
- package/dist/src/services/owner-session.js +10 -2
- package/dist/src/services/owner-session.js.map +1 -1
- package/dist/src/services/package-seeder.d.ts +22 -0
- package/dist/src/services/package-seeder.d.ts.map +1 -0
- package/dist/src/services/package-seeder.js +30 -0
- package/dist/src/services/package-seeder.js.map +1 -0
- package/dist/src/services/presence.d.ts +3 -0
- package/dist/src/services/presence.d.ts.map +1 -1
- package/dist/src/services/presence.js +10 -0
- package/dist/src/services/presence.js.map +1 -1
- package/dist/src/services/prompt-defaults.d.ts.map +1 -1
- package/dist/src/services/prompt-defaults.js +8 -3
- package/dist/src/services/prompt-defaults.js.map +1 -1
- package/dist/src/services/scheduler.d.ts +50 -2
- package/dist/src/services/scheduler.d.ts.map +1 -1
- package/dist/src/services/scheduler.js +454 -26
- package/dist/src/services/scheduler.js.map +1 -1
- package/dist/src/services/secretary-authoring.d.ts +71 -0
- package/dist/src/services/secretary-authoring.d.ts.map +1 -0
- package/dist/src/services/secretary-authoring.js +336 -0
- package/dist/src/services/secretary-authoring.js.map +1 -0
- package/dist/src/services/secretary-clarify.d.ts +57 -0
- package/dist/src/services/secretary-clarify.d.ts.map +1 -0
- package/dist/src/services/secretary-clarify.js +104 -0
- package/dist/src/services/secretary-clarify.js.map +1 -0
- package/dist/src/services/secretary-feed.d.ts +11 -0
- package/dist/src/services/secretary-feed.d.ts.map +1 -0
- package/dist/src/services/secretary-feed.js +28 -0
- package/dist/src/services/secretary-feed.js.map +1 -0
- package/dist/src/services/secretary-tick.d.ts +243 -3
- package/dist/src/services/secretary-tick.d.ts.map +1 -1
- package/dist/src/services/secretary-tick.js +273 -3
- package/dist/src/services/secretary-tick.js.map +1 -1
- package/dist/src/services/secretary-workbrief.d.ts +144 -0
- package/dist/src/services/secretary-workbrief.d.ts.map +1 -0
- package/dist/src/services/secretary-workbrief.js +315 -0
- package/dist/src/services/secretary-workbrief.js.map +1 -0
- package/dist/src/services/secretary-worktier.d.ts +118 -0
- package/dist/src/services/secretary-worktier.d.ts.map +1 -0
- package/dist/src/services/secretary-worktier.js +157 -0
- package/dist/src/services/secretary-worktier.js.map +1 -0
- package/dist/src/services/skill-bundle/generator.d.ts +3 -0
- package/dist/src/services/skill-bundle/generator.d.ts.map +1 -1
- package/dist/src/services/skill-bundle/generator.js +19 -0
- package/dist/src/services/skill-bundle/generator.js.map +1 -1
- package/dist/src/services/specialist-runner.d.ts +36 -0
- package/dist/src/services/specialist-runner.d.ts.map +1 -0
- package/dist/src/services/specialist-runner.js +91 -0
- package/dist/src/services/specialist-runner.js.map +1 -0
- package/dist/src/services/specialist.d.ts +9 -0
- package/dist/src/services/specialist.d.ts.map +1 -1
- package/dist/src/services/specialist.js +42 -0
- package/dist/src/services/specialist.js.map +1 -1
- package/dist/src/services/structure-overview.d.ts +13 -0
- package/dist/src/services/structure-overview.d.ts.map +1 -1
- package/dist/src/services/structure-overview.js +34 -11
- package/dist/src/services/structure-overview.js.map +1 -1
- package/dist/src/services/system-agent-responder.d.ts +36 -0
- package/dist/src/services/system-agent-responder.d.ts.map +1 -0
- package/dist/src/services/system-agent-responder.js +107 -0
- package/dist/src/services/system-agent-responder.js.map +1 -0
- package/dist/src/services/system-agent.d.ts +34 -1
- package/dist/src/services/system-agent.d.ts.map +1 -1
- package/dist/src/services/system-agent.js +73 -0
- package/dist/src/services/system-agent.js.map +1 -1
- package/dist/src/storage/interface.d.ts +33 -0
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/interface.js.map +1 -1
- package/dist/src/storage/providers/mongodb/index.d.ts +37 -0
- package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.js +132 -12
- package/dist/src/storage/providers/mongodb/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/index.d.ts +23 -1
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +60 -8
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/memory.d.ts +29 -1
- package/dist/src/storage/providers/sqlite/repos/memory.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/memory.js +109 -10
- package/dist/src/storage/providers/sqlite/repos/memory.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts +3 -0
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +64 -9
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/app.repository.d.ts +15 -0
- package/dist/src/storage/repositories/app.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/memory.repository.d.ts +41 -1
- package/dist/src/storage/repositories/memory.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/organism.repository.d.ts +2 -1
- package/dist/src/storage/repositories/organism.repository.d.ts.map +1 -1
- package/dist/static/app-catalog.html +469 -122
- package/package.json +2 -1
- package/prisma/schema.postgres.prisma +10 -0
- package/prisma/schema.prisma +12 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file aimeat-marketplace-package.ts
|
|
3
|
+
* @description Installable package "aimeat-marketplace" — a MULTI-SELLER marketplace. Delivered as
|
|
4
|
+
* a package (like aimeat-iam): installing it registers a per-instance scoped extension + app
|
|
5
|
+
* (`aimeat-marketplace-{owner}-{shortId}-…`), so each install is an independent storefront.
|
|
6
|
+
*
|
|
7
|
+
* Why a package (not a single-file app): a multi-seller marketplace needs a SHARED, multi-writer,
|
|
8
|
+
* anon-readable catalog. On AIMEAT the only anon memory read is getPublic(gaii, key) (no anon
|
|
9
|
+
* search), and app-origin apps (role 'app') cannot write to any shared native surface (boards
|
|
10
|
+
* need agent/owner role). A sandboxed extension is the one thing app-origin apps CAN invoke
|
|
11
|
+
* (POST /v1/ext/:name/:action needs only auth) that writes a shared namespace server-side
|
|
12
|
+
* (ext:{name} memory is stored public → anon reads it via getPublic). So:
|
|
13
|
+
* - extension `marketplace` — owns the shared listings store; actions post / remove.
|
|
14
|
+
* post: any authed user publishes a listing; seller = ctx.caller.gaii.
|
|
15
|
+
* remove: a seller removes their OWN listing (server-enforced by caller match).
|
|
16
|
+
* - app `marketplace` — anon browses + searches + opens detail (reads ext:marketplace/listings
|
|
17
|
+
* via getPublic); logged-in users post with an uploaded image and remove their own.
|
|
18
|
+
* Install rewrites `marketplace` → the scoped name in both /v1/ext/… and "ext:…" refs
|
|
19
|
+
* (component-registrar.rewriteComponentRefs).
|
|
20
|
+
* @version-history
|
|
21
|
+
* v1.0.0 — 2026-06-26 — initial: extension (post/remove) + multi-seller storefront app.
|
|
22
|
+
*/
|
|
23
|
+
import type { ExamplePackageDef } from './example-packages.js';
|
|
24
|
+
export declare function aimeatMarketplacePackage(): ExamplePackageDef;
|
|
25
|
+
//# sourceMappingURL=aimeat-marketplace-package.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aimeat-marketplace-package.d.ts","sourceRoot":"","sources":["../../../src/data/aimeat-marketplace-package.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA4N/D,wBAAgB,wBAAwB,IAAI,iBAAiB,CAkB5D"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
// ── Extension `marketplace` — shared multi-writer store (V8 sandbox: export default async (ctx, input)) ──
|
|
2
|
+
// The app generates id + at and passes them in, so the sandbox needs no Date/Math.
|
|
3
|
+
const SCRIPT_POST = `export default async function (ctx, input) {
|
|
4
|
+
if (!input || !input.title) return { ok: false, error: 'title required' };
|
|
5
|
+
var listings = (await ctx.memory.get('listings')) || [];
|
|
6
|
+
var listing = {
|
|
7
|
+
id: String(input.id || (listings.length + '-' + (input.at || ''))),
|
|
8
|
+
title: String(input.title).slice(0, 200),
|
|
9
|
+
price: String(input.price || '').slice(0, 60),
|
|
10
|
+
desc: String(input.desc || '').slice(0, 4000),
|
|
11
|
+
imageUrl: String(input.imageUrl || '').slice(0, 500),
|
|
12
|
+
seller: (ctx.caller && ctx.caller.gaii) || null,
|
|
13
|
+
at: String(input.at || '')
|
|
14
|
+
};
|
|
15
|
+
listings.unshift(listing);
|
|
16
|
+
if (listings.length > 500) listings = listings.slice(0, 500); // cap the shared store
|
|
17
|
+
await ctx.memory.set('listings', listings);
|
|
18
|
+
return { ok: true, id: listing.id };
|
|
19
|
+
}`;
|
|
20
|
+
const SCRIPT_REMOVE = `export default async function (ctx, input) {
|
|
21
|
+
var caller = (ctx.caller && ctx.caller.gaii) || null;
|
|
22
|
+
var id = input && input.id;
|
|
23
|
+
if (!id) return { ok: false, error: 'id required' };
|
|
24
|
+
var listings = (await ctx.memory.get('listings')) || [];
|
|
25
|
+
var before = listings.length;
|
|
26
|
+
// Server-enforced: only the seller can remove their own listing.
|
|
27
|
+
listings = listings.filter(function (l) { return !(l.id === id && l.seller === caller); });
|
|
28
|
+
await ctx.memory.set('listings', listings);
|
|
29
|
+
return { ok: true, removed: before - listings.length };
|
|
30
|
+
}`;
|
|
31
|
+
const EXTENSION_MARKETPLACE = JSON.stringify({
|
|
32
|
+
manifest: [
|
|
33
|
+
'metadata:',
|
|
34
|
+
' name: marketplace',
|
|
35
|
+
' version: 1.0.0',
|
|
36
|
+
' description: Multi-seller marketplace shared store (listings).',
|
|
37
|
+
' author: operator',
|
|
38
|
+
'required_apis:',
|
|
39
|
+
' - memory',
|
|
40
|
+
'actions:',
|
|
41
|
+
' - id: post',
|
|
42
|
+
' method: POST',
|
|
43
|
+
' path: /post',
|
|
44
|
+
' description: Publish a listing. Any authenticated user; the seller is the caller.',
|
|
45
|
+
' input_schema: { type: object, properties: { title: { type: string }, price: { type: string }, desc: { type: string }, imageUrl: { type: string }, id: { type: string }, at: { type: string } }, required: [title] }',
|
|
46
|
+
' output_schema: { type: object, properties: { ok: { type: boolean }, id: { type: string } } }',
|
|
47
|
+
' script: post.js',
|
|
48
|
+
' - id: remove',
|
|
49
|
+
' method: POST',
|
|
50
|
+
' path: /remove',
|
|
51
|
+
' description: Remove your own listing by id (server-enforced by caller match).',
|
|
52
|
+
' input_schema: { type: object, properties: { id: { type: string } }, required: [id] }',
|
|
53
|
+
' output_schema: { type: object, properties: { ok: { type: boolean }, removed: { type: number } } }',
|
|
54
|
+
' script: remove.js',
|
|
55
|
+
].join('\n'),
|
|
56
|
+
scripts: {
|
|
57
|
+
'post.js': SCRIPT_POST,
|
|
58
|
+
'remove.js': SCRIPT_REMOVE,
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
// ── App `marketplace` — multi-seller storefront (calls /v1/ext/marketplace/*, reads ext:marketplace) ──
|
|
62
|
+
const APP_MARKETPLACE = `<!DOCTYPE html>
|
|
63
|
+
<!-- AIMEAT App Manifest
|
|
64
|
+
name: marketplace
|
|
65
|
+
version: 1.0.0
|
|
66
|
+
description: A multi-seller marketplace — browse + search listings, log in to post your own.
|
|
67
|
+
entry: index.html
|
|
68
|
+
-->
|
|
69
|
+
<html lang="en" data-theme="dark">
|
|
70
|
+
<head>
|
|
71
|
+
<meta charset="UTF-8" />
|
|
72
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
73
|
+
<title>Marketplace</title>
|
|
74
|
+
<link href="/lib/daisyui@5.css" rel="stylesheet" type="text/css" />
|
|
75
|
+
<link href="/lib/aimeat-daisyui-bridge.css" rel="stylesheet" type="text/css" />
|
|
76
|
+
<script src="/lib/tailwindcss@4.js"></script>
|
|
77
|
+
</head>
|
|
78
|
+
<body class="bg-base-100 text-base-content min-h-screen flex flex-col">
|
|
79
|
+
<nav class="navbar bg-base-200 px-4 shadow-sm sticky top-0 z-50 gap-2">
|
|
80
|
+
<div class="flex-1 min-w-0"><span class="text-lg font-bold">Marketplace</span></div>
|
|
81
|
+
<input id="search" class="input input-bordered input-sm w-40 sm:w-64" placeholder="Search…" />
|
|
82
|
+
<button id="post-btn" class="btn-primary px-4" hidden>+ Post</button>
|
|
83
|
+
<span id="login"></span>
|
|
84
|
+
</nav>
|
|
85
|
+
|
|
86
|
+
<main class="flex-1 w-full max-w-5xl mx-auto p-4">
|
|
87
|
+
<div id="grid" class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4"></div>
|
|
88
|
+
<div id="empty" class="text-center opacity-60 py-16" hidden>No listings yet.</div>
|
|
89
|
+
</main>
|
|
90
|
+
|
|
91
|
+
<div id="detail" class="fixed inset-0 bg-black/60 z-50 hidden items-center justify-center p-4" style="display:none">
|
|
92
|
+
<div class="card bg-base-200 max-w-lg w-full max-h-[90vh] overflow-y-auto"><div id="detail-body" class="card-body"></div></div>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<div id="post" class="fixed inset-0 bg-black/60 z-50 hidden items-center justify-center p-4" style="display:none">
|
|
96
|
+
<form id="post-form" class="card bg-base-200 max-w-md w-full"><div class="card-body gap-3">
|
|
97
|
+
<h3 class="text-lg font-bold">Post a listing</h3>
|
|
98
|
+
<input id="f-title" class="input input-bordered" placeholder="Title" required />
|
|
99
|
+
<input id="f-price" class="input input-bordered" placeholder="Price (e.g. 20 €)" />
|
|
100
|
+
<textarea id="f-desc" class="textarea textarea-bordered" placeholder="Description" rows="3"></textarea>
|
|
101
|
+
<input id="f-image" type="file" accept="image/*" class="file-input file-input-bordered" />
|
|
102
|
+
<div class="flex gap-2 justify-end">
|
|
103
|
+
<button type="button" id="post-cancel" class="btn-ghost px-4">Cancel</button>
|
|
104
|
+
<button type="submit" id="post-submit" class="btn-primary px-6">Publish</button>
|
|
105
|
+
</div>
|
|
106
|
+
</div></form>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<script src="/v1/libs/aimeat-auth.js"></script>
|
|
110
|
+
<script src="/v1/libs/aimeat-data.js"></script>
|
|
111
|
+
<script src="/v1/libs/aimeat-storage.js"></script>
|
|
112
|
+
<script>
|
|
113
|
+
var EXT = '/v1/ext/marketplace'; // rewritten to the scoped instance name on install
|
|
114
|
+
var NS = 'ext:marketplace'; // rewritten too — the shared listings namespace
|
|
115
|
+
var session = null, all = [];
|
|
116
|
+
var gridEl = document.getElementById('grid'), emptyEl = document.getElementById('empty');
|
|
117
|
+
|
|
118
|
+
function esc(s) { var d = document.createElement('div'); d.textContent = s == null ? '' : String(s); return d.innerHTML; }
|
|
119
|
+
function show(id) { document.getElementById(id).style.display = 'flex'; }
|
|
120
|
+
function hide(id) { document.getElementById(id).style.display = 'none'; }
|
|
121
|
+
function extCall(action, body) {
|
|
122
|
+
return fetch(EXT + '/' + action, {
|
|
123
|
+
method: 'POST',
|
|
124
|
+
headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + (session && session.jwt) },
|
|
125
|
+
body: JSON.stringify(body || {})
|
|
126
|
+
}).then(function (r) { return r.json(); });
|
|
127
|
+
}
|
|
128
|
+
function filtered() {
|
|
129
|
+
var q = document.getElementById('search').value.toLowerCase().trim();
|
|
130
|
+
if (!q) return all;
|
|
131
|
+
return all.filter(function (it) { return ((it.title || '') + ' ' + (it.desc || '')).toLowerCase().indexOf(q) !== -1; });
|
|
132
|
+
}
|
|
133
|
+
function render() {
|
|
134
|
+
var items = filtered();
|
|
135
|
+
emptyEl.hidden = items.length > 0;
|
|
136
|
+
gridEl.innerHTML = '';
|
|
137
|
+
items.forEach(function (it) {
|
|
138
|
+
var card = document.createElement('div');
|
|
139
|
+
card.className = 'card bg-base-200 shadow cursor-pointer hover:ring-2 hover:ring-primary transition';
|
|
140
|
+
card.innerHTML =
|
|
141
|
+
(it.imageUrl ? '<figure class="aspect-square overflow-hidden"><img src="' + esc(it.imageUrl) + '" class="w-full h-full object-cover" /></figure>'
|
|
142
|
+
: '<figure class="aspect-square bg-base-300 flex items-center justify-center text-4xl opacity-40">🖼️</figure>') +
|
|
143
|
+
'<div class="card-body p-3 gap-1"><h3 class="font-semibold text-sm truncate">' + esc(it.title) + '</h3>' +
|
|
144
|
+
'<div class="text-primary font-bold text-sm">' + esc(it.price || '') + '</div></div>';
|
|
145
|
+
card.onclick = function () { openDetail(it); };
|
|
146
|
+
gridEl.appendChild(card);
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
function openDetail(it) {
|
|
150
|
+
var mine = session && it.seller && it.seller === session.ghii;
|
|
151
|
+
document.getElementById('detail-body').innerHTML =
|
|
152
|
+
(it.imageUrl ? '<img src="' + esc(it.imageUrl) + '" class="rounded-lg w-full object-contain max-h-80 mb-3" />' : '') +
|
|
153
|
+
'<h2 class="text-xl font-bold">' + esc(it.title) + '</h2>' +
|
|
154
|
+
'<div class="text-primary font-bold text-lg my-1">' + esc(it.price || '') + '</div>' +
|
|
155
|
+
'<p class="whitespace-pre-wrap opacity-90">' + esc(it.desc || '') + '</p>' +
|
|
156
|
+
'<div class="text-xs opacity-60 mt-3">Seller: ' + esc(it.seller || '') + '</div>' +
|
|
157
|
+
'<div class="flex justify-between mt-4">' +
|
|
158
|
+
(mine ? '<button class="btn-danger px-4" id="rm-btn">Remove</button>' : '<span></span>') +
|
|
159
|
+
'<button class="btn-ghost px-4" onclick="document.getElementById(\\'detail\\').style.display=\\'none\\'">Close</button></div>';
|
|
160
|
+
if (mine) document.getElementById('rm-btn').onclick = function () { removeListing(it.id); };
|
|
161
|
+
show('detail');
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
async function load() {
|
|
165
|
+
try { var arr = await AIMEAT.data.getPublic(NS, 'listings'); all = Array.isArray(arr) ? arr.slice() : []; }
|
|
166
|
+
catch (e) { all = []; }
|
|
167
|
+
all.sort(function (a, b) { return (b.at || '').localeCompare(a.at || ''); });
|
|
168
|
+
render();
|
|
169
|
+
}
|
|
170
|
+
document.getElementById('search').addEventListener('input', render);
|
|
171
|
+
|
|
172
|
+
async function removeListing(id) {
|
|
173
|
+
try { var r = await extCall('remove', { id: id }); if (r && r.data && r.data.ok) { hide('detail'); await load(); } }
|
|
174
|
+
catch (e) { alert('Could not remove: ' + (e.message || e)); }
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
document.getElementById('post-btn').onclick = function () { show('post'); };
|
|
178
|
+
document.getElementById('post-cancel').onclick = function () { hide('post'); };
|
|
179
|
+
document.getElementById('post-form').addEventListener('submit', async function (ev) {
|
|
180
|
+
ev.preventDefault();
|
|
181
|
+
var btn = document.getElementById('post-submit'); btn.disabled = true; btn.textContent = 'Publishing…';
|
|
182
|
+
try {
|
|
183
|
+
var imageUrl = '';
|
|
184
|
+
var fi = document.getElementById('f-image');
|
|
185
|
+
if (fi.files[0]) { var up = await AIMEAT.storage.upload(fi.files[0], { visibility: 'public' }); imageUrl = '/v1/pub/' + encodeURIComponent(session.ghii) + '/' + encodeURIComponent(up.key); }
|
|
186
|
+
var r = await extCall('post', {
|
|
187
|
+
id: Date.now() + '-' + Math.random().toString(36).slice(2, 7),
|
|
188
|
+
at: new Date().toISOString(),
|
|
189
|
+
title: document.getElementById('f-title').value.trim(),
|
|
190
|
+
price: document.getElementById('f-price').value.trim(),
|
|
191
|
+
desc: document.getElementById('f-desc').value.trim(),
|
|
192
|
+
imageUrl: imageUrl
|
|
193
|
+
});
|
|
194
|
+
var d = (r && r.data) || {};
|
|
195
|
+
if (!d.ok) throw new Error(d.error || 'post failed');
|
|
196
|
+
document.getElementById('post-form').reset(); hide('post'); await load();
|
|
197
|
+
} catch (e) { alert('Could not publish: ' + (e.message || e)); }
|
|
198
|
+
btn.disabled = false; btn.textContent = 'Publish';
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
var booted = false;
|
|
202
|
+
function applySession(s) { session = s; document.getElementById('post-btn').hidden = false; }
|
|
203
|
+
function tryAuth() { if (booted) return; var s = AIMEAT.auth.getSession && AIMEAT.auth.getSession(); if (s && s.jwt) { booted = true; applySession(s); } }
|
|
204
|
+
AIMEAT.auth.mountLoginButton('#login', { onLogin: function () { tryAuth(); }, onLogout: function () { location.reload(); } });
|
|
205
|
+
var _iv = setInterval(function () { tryAuth(); if (booted) clearInterval(_iv); }, 300);
|
|
206
|
+
tryAuth();
|
|
207
|
+
load(); // everyone browses (anon reads the public shared store)
|
|
208
|
+
</script>
|
|
209
|
+
</body>
|
|
210
|
+
</html>`;
|
|
211
|
+
// ── Package definition ───────────────────────────────────────────────
|
|
212
|
+
export function aimeatMarketplacePackage() {
|
|
213
|
+
return {
|
|
214
|
+
name: 'aimeat-marketplace',
|
|
215
|
+
description: 'A multi-seller marketplace. Anyone browses + searches listings and opens a detail view; logged-in users post their own listings with an uploaded image and remove them. A sandboxed extension owns the shared, multi-writer listings store (server-enforced ownership); the app reads it publicly so even anonymous visitors see the catalog. Install creates your own independent storefront instance.',
|
|
216
|
+
category: 'marketplace',
|
|
217
|
+
tags: ['marketplace', 'listings', 'multi-seller', 'storefront', 'commerce', 'extension'],
|
|
218
|
+
visibility: 'public',
|
|
219
|
+
components: [
|
|
220
|
+
{ id: 'extension-marketplace', type: 'extension', label: 'Marketplace Store Extension', content: EXTENSION_MARKETPLACE, dependencies: [] },
|
|
221
|
+
{ id: 'app-marketplace', type: 'app', label: 'Marketplace', content: APP_MARKETPLACE, dependencies: ['extension-marketplace'] },
|
|
222
|
+
],
|
|
223
|
+
templateListing: {
|
|
224
|
+
title: 'aimeat-marketplace — Multi-seller Marketplace',
|
|
225
|
+
description: 'A turnkey multi-seller marketplace: anonymous visitors browse, search, and open listings; logged-in users post their own items with photos and remove them. A sandboxed extension owns the shared listings store and enforces that sellers can only remove their own posts — solving the multi-writer + anonymous-read problem a single-file app cannot. Install to get your own independent storefront.',
|
|
226
|
+
category: 'marketplace',
|
|
227
|
+
tags: ['marketplace', 'listings', 'multi-seller', 'storefront', 'commerce'],
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=aimeat-marketplace-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aimeat-marketplace-package.js","sourceRoot":"","sources":["../../../src/data/aimeat-marketplace-package.ts"],"names":[],"mappings":"AAwBA,4GAA4G;AAC5G,mFAAmF;AAEnF,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;EAgBlB,CAAC;AAEH,MAAM,aAAa,GAAG;;;;;;;;;;EAUpB,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC;IAC3C,QAAQ,EAAE;QACR,WAAW;QACX,qBAAqB;QACrB,kBAAkB;QAClB,kEAAkE;QAClE,oBAAoB;QACpB,gBAAgB;QAChB,YAAY;QACZ,UAAU;QACV,cAAc;QACd,kBAAkB;QAClB,iBAAiB;QACjB,uFAAuF;QACvF,yNAAyN;QACzN,kGAAkG;QAClG,qBAAqB;QACrB,gBAAgB;QAChB,kBAAkB;QAClB,mBAAmB;QACnB,mFAAmF;QACnF,0FAA0F;QAC1F,uGAAuG;QACvG,uBAAuB;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,OAAO,EAAE;QACP,SAAS,EAAE,WAAW;QACtB,WAAW,EAAE,aAAa;KAC3B;CACF,CAAC,CAAC;AAEH,yGAAyG;AAEzG,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoJhB,CAAC;AAET,wEAAwE;AAExE,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,yYAAyY;QACtZ,QAAQ,EAAE,aAAa;QACvB,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC;QACxF,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,6BAA6B,EAAE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,EAAE,EAAE;YAC1I,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,uBAAuB,CAAC,EAAE;SAChI;QACD,eAAe,EAAE;YACf,KAAK,EAAE,+CAA+C;YACtD,WAAW,EAAE,0YAA0Y;YACvZ,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,CAAC;SAC5E;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file app-templates.ts
|
|
3
|
+
* @description Authoring-template registry — the "booster kit" data. Curated starting points
|
|
4
|
+
* the app-prompt builders (app-catalog + landing) inject so the AI copies from a model instead
|
|
5
|
+
* of building from scratch. Templates are DATA: adding one is a new entry here (+ its content),
|
|
6
|
+
* no code change. Served as JSON at GET /v1/app-templates and consumed by both prompt surfaces.
|
|
7
|
+
*
|
|
8
|
+
* kinds (layered — see docs/internal/authoring-templates/):
|
|
9
|
+
* - app-shell : a full app skeleton (boot + auth + layout + theme). Tiers T1/T2/T3.
|
|
10
|
+
* - component : a reusable block + its lib deps (future).
|
|
11
|
+
* - use-case : composes an app-shell + components (+ optional package) (future).
|
|
12
|
+
* @structure AppTemplate · getAppTemplates() · getAppTemplateIndex()
|
|
13
|
+
* @version-history
|
|
14
|
+
* v1.0.0 — 2026-06-26 — initial registry + first app-shell (T1 pure-client).
|
|
15
|
+
* v1.1.0 — 2026-06-26 — app-shells T2 (cortex) + T3 (extension).
|
|
16
|
+
* v1.2.0 — 2026-06-26 — component library (auth-gated, private-store, shared-feed, ai-action, data-table, settings, dated-archive).
|
|
17
|
+
* v1.3.0 — 2026-06-26 — components: image-upload, realtime-room, search, list+detail (for marketplace / realtime-social / homepage use-cases).
|
|
18
|
+
* v1.4.0 — 2026-06-26 — use-case templates (full working scaffolds) + composes field; first: realtime-social.
|
|
19
|
+
* v1.5.0 — 2026-06-26 — use-case: marketplace (anon browse + search + detail + post with image); fix image-upload URL.
|
|
20
|
+
* v1.6.0 — 2026-06-26 — component: markdown (AIMEAT.md.render); use-case: homepage (personal site — profile + markdown blog + images + AI stories).
|
|
21
|
+
* v1.7.0 — 2026-06-26 — plain-language app-shell titles (drop T1/T2/T3 jargon): "Standard app",
|
|
22
|
+
* "Data app", "Connected app" — what a non-technical user gets, not the architecture.
|
|
23
|
+
*/
|
|
24
|
+
export interface AppTemplate {
|
|
25
|
+
/** Stable id, e.g. "shell-pure-client". */
|
|
26
|
+
id: string;
|
|
27
|
+
kind: 'app-shell' | 'component' | 'use-case';
|
|
28
|
+
/** Capability tier for app-shells: T1 pure client · T2 +cortex · T3 +extension. */
|
|
29
|
+
tier?: 'T1' | 'T2' | 'T3';
|
|
30
|
+
title: string;
|
|
31
|
+
/** One line shown in the picker and in the prompt index. */
|
|
32
|
+
description: string;
|
|
33
|
+
/** Client libs the template loads (for the AI's awareness). */
|
|
34
|
+
libs: string[];
|
|
35
|
+
/** For use-cases: the component/shell ids this scaffold builds on (for the index + matching). */
|
|
36
|
+
composes?: string[];
|
|
37
|
+
/** The model the AI copies from — a skeleton, not a finished app. */
|
|
38
|
+
content: string;
|
|
39
|
+
}
|
|
40
|
+
/** All authoring templates. */
|
|
41
|
+
export declare function getAppTemplates(): AppTemplate[];
|
|
42
|
+
/**
|
|
43
|
+
* Lightweight index (no content) — for injecting a menu into a prompt or rendering
|
|
44
|
+
* a picker. Pass a `lang` (e.g. 'fi') to get localized title/description where a
|
|
45
|
+
* translation exists; everything else falls back to the canonical English.
|
|
46
|
+
*/
|
|
47
|
+
export declare function getAppTemplateIndex(lang?: string): Array<Pick<AppTemplate, 'id' | 'kind' | 'tier' | 'title' | 'description' | 'libs'>>;
|
|
48
|
+
//# sourceMappingURL=app-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-templates.d.ts","sourceRoot":"","sources":["../../../src/data/app-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;IAC7C,mFAAmF;IACnF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;CACjB;AA60BD,+BAA+B;AAC/B,wBAAgB,eAAe,IAAI,WAAW,EAAE,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC,CAAC,CAMtI"}
|