@vibes.diy/api-svc 14.3.79 → 14.3.81

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 (167) hide show
  1. package/cf-serve.js.map +1 -1
  2. package/create-handler.d.ts +0 -1
  3. package/create-handler.js +0 -2
  4. package/create-handler.js.map +1 -1
  5. package/evento-handler-manifest.js +6 -2
  6. package/evento-handler-manifest.js.map +1 -1
  7. package/index.d.ts +0 -1
  8. package/index.js +0 -1
  9. package/index.js.map +1 -1
  10. package/intern/account-vibe-activity.d.ts +36 -0
  11. package/intern/account-vibe-activity.js +284 -0
  12. package/intern/account-vibe-activity.js.map +1 -0
  13. package/intern/agent-account-tools.d.ts +21 -1
  14. package/intern/agent-account-tools.js +221 -35
  15. package/intern/agent-account-tools.js.map +1 -1
  16. package/intern/agent-assembly.d.ts +3 -0
  17. package/intern/agent-assembly.js +28 -2
  18. package/intern/agent-assembly.js.map +1 -1
  19. package/intern/agent-belt.js +3 -1
  20. package/intern/agent-belt.js.map +1 -1
  21. package/intern/agent-discussions.d.ts +22 -0
  22. package/intern/agent-discussions.js +131 -0
  23. package/intern/agent-discussions.js.map +1 -0
  24. package/intern/agent-dispatcher.d.ts +1 -0
  25. package/intern/agent-dispatcher.js +3 -0
  26. package/intern/agent-dispatcher.js.map +1 -1
  27. package/intern/agent-file-tools.d.ts +12 -2
  28. package/intern/agent-file-tools.js.map +1 -1
  29. package/intern/agent-options-tool.d.ts +5 -1
  30. package/intern/agent-options-tool.js +49 -14
  31. package/intern/agent-options-tool.js.map +1 -1
  32. package/intern/agent-read-tools.d.ts +1 -0
  33. package/intern/agent-read-tools.js +1 -1
  34. package/intern/agent-read-tools.js.map +1 -1
  35. package/intern/agent-request-frame.d.ts +24 -2
  36. package/intern/agent-request-frame.js +78 -16
  37. package/intern/agent-request-frame.js.map +1 -1
  38. package/intern/agent-session-instruction.d.ts +2 -2
  39. package/intern/agent-session-instruction.js +7 -14
  40. package/intern/agent-session-instruction.js.map +1 -1
  41. package/intern/agent-session.d.ts +5 -0
  42. package/intern/agent-session.js +10 -2
  43. package/intern/agent-session.js.map +1 -1
  44. package/intern/agent-settled-history.d.ts +22 -0
  45. package/intern/agent-settled-history.js +293 -0
  46. package/intern/agent-settled-history.js.map +1 -0
  47. package/intern/agent-top-level-instruction.d.ts +2 -2
  48. package/intern/agent-top-level-instruction.js +7 -4
  49. package/intern/agent-top-level-instruction.js.map +1 -1
  50. package/intern/agent-wake.d.ts +3 -0
  51. package/intern/agent-wake.js +3 -1
  52. package/intern/agent-wake.js.map +1 -1
  53. package/intern/agent-with-vibe.d.ts +24 -1
  54. package/intern/agent-with-vibe.js +97 -30
  55. package/intern/agent-with-vibe.js.map +1 -1
  56. package/intern/builder-model.d.ts +2 -0
  57. package/intern/builder-model.js +1 -0
  58. package/intern/builder-model.js.map +1 -1
  59. package/intern/builder-settled-history.d.ts +12 -0
  60. package/intern/builder-settled-history.js +71 -0
  61. package/intern/builder-settled-history.js.map +1 -0
  62. package/intern/byok-model-scope.d.ts +7 -0
  63. package/intern/byok-model-scope.js +11 -0
  64. package/intern/byok-model-scope.js.map +1 -0
  65. package/intern/caller-model.d.ts +19 -0
  66. package/intern/caller-model.js +30 -0
  67. package/intern/caller-model.js.map +1 -0
  68. package/intern/design-repair.d.ts +3 -0
  69. package/intern/design-repair.js +41 -1
  70. package/intern/design-repair.js.map +1 -1
  71. package/intern/ensure-chat-id.js +40 -2
  72. package/intern/ensure-chat-id.js.map +1 -1
  73. package/intern/first-build-no-app.d.ts +15 -0
  74. package/intern/first-build-no-app.js +124 -0
  75. package/intern/first-build-no-app.js.map +1 -0
  76. package/intern/get-vibe-route-hints.d.ts +2 -2
  77. package/intern/get-vibe-route-hints.js +9 -5
  78. package/intern/get-vibe-route-hints.js.map +1 -1
  79. package/intern/import-synth.js +1 -0
  80. package/intern/import-synth.js.map +1 -1
  81. package/intern/llm-tool-loop.d.ts +5 -1
  82. package/intern/llm-tool-loop.js +11 -6
  83. package/intern/llm-tool-loop.js.map +1 -1
  84. package/intern/local-day.d.ts +3 -0
  85. package/intern/local-day.js +17 -0
  86. package/intern/local-day.js.map +1 -0
  87. package/intern/look-lint-engine.js +25 -1
  88. package/intern/look-lint-engine.js.map +1 -1
  89. package/intern/mint-fire-core.d.ts +1 -0
  90. package/intern/mint-fire-core.js +8 -0
  91. package/intern/mint-fire-core.js.map +1 -1
  92. package/intern/opens-check.js +3 -0
  93. package/intern/opens-check.js.map +1 -1
  94. package/intern/prompt-assembly.d.ts +9 -0
  95. package/intern/prompt-assembly.js +77 -14
  96. package/intern/prompt-assembly.js.map +1 -1
  97. package/package.json +14 -13
  98. package/public/access-function.js.map +1 -1
  99. package/public/agent-turn-action.js +115 -66
  100. package/public/agent-turn-action.js.map +1 -1
  101. package/public/agent-turn-assembly.d.ts +5 -0
  102. package/public/agent-turn-assembly.js +22 -6
  103. package/public/agent-turn-assembly.js.map +1 -1
  104. package/public/app-documents-write-eventos.js +12 -2
  105. package/public/app-documents-write-eventos.js.map +1 -1
  106. package/public/codegen-turn-route.d.ts +2 -0
  107. package/public/codegen-turn-route.js +3 -1
  108. package/public/codegen-turn-route.js.map +1 -1
  109. package/public/fork-app.js +4 -1
  110. package/public/fork-app.js.map +1 -1
  111. package/public/fs-prompt.d.ts +2 -1
  112. package/public/fs-prompt.js +4 -2
  113. package/public/fs-prompt.js.map +1 -1
  114. package/public/handler-llm-request.d.ts +3 -1
  115. package/public/handler-llm-request.js +14 -2
  116. package/public/handler-llm-request.js.map +1 -1
  117. package/public/home-feed-common.js +1 -1
  118. package/public/home-feed-common.js.map +1 -1
  119. package/public/list-agent-discussions.d.ts +3 -0
  120. package/public/list-agent-discussions.js +45 -0
  121. package/public/list-agent-discussions.js.map +1 -0
  122. package/public/list-app-models.d.ts +20 -0
  123. package/public/list-app-models.js +159 -0
  124. package/public/list-app-models.js.map +1 -0
  125. package/public/list-vibe-activity.d.ts +3 -0
  126. package/public/list-vibe-activity.js +58 -0
  127. package/public/list-vibe-activity.js.map +1 -0
  128. package/public/llm-dispatch-fallback.d.ts +1 -0
  129. package/public/llm-dispatch-fallback.js +4 -0
  130. package/public/llm-dispatch-fallback.js.map +1 -1
  131. package/public/open-chat.js +2 -1
  132. package/public/open-chat.js.map +1 -1
  133. package/public/prompt-chat-section.js +22 -1
  134. package/public/prompt-chat-section.js.map +1 -1
  135. package/public/prompt-section-actions.d.ts +2 -0
  136. package/public/prompt-section-actions.js +5 -2
  137. package/public/prompt-section-actions.js.map +1 -1
  138. package/public/prompt-turn-envelope.d.ts +1 -0
  139. package/public/prompt-turn-envelope.js +3 -0
  140. package/public/prompt-turn-envelope.js.map +1 -1
  141. package/public/prompt-turn-settled.js +2 -0
  142. package/public/prompt-turn-settled.js.map +1 -1
  143. package/public/prompt-turn-types.d.ts +1 -0
  144. package/public/related-vibes.js +3 -3
  145. package/public/related-vibes.js.map +1 -1
  146. package/public/request-flow.js +7 -1
  147. package/public/request-flow.js.map +1 -1
  148. package/public/resolve-active-handle.d.ts +1 -0
  149. package/public/resolve-active-handle.js +36 -1
  150. package/public/resolve-active-handle.js.map +1 -1
  151. package/public/stream-assembly.js +2 -0
  152. package/public/stream-assembly.js.map +1 -1
  153. package/shard-gate.js +15 -2
  154. package/shard-gate.js.map +1 -1
  155. package/types.d.ts +0 -1
  156. package/types.js.map +1 -1
  157. package/usage-report/first-build-no-app-alarm-util.d.ts +24 -0
  158. package/usage-report/first-build-no-app-alarm-util.js +70 -0
  159. package/usage-report/first-build-no-app-alarm-util.js.map +1 -0
  160. package/usage-report/first-build-no-app-alarm.d.ts +2 -0
  161. package/usage-report/first-build-no-app-alarm.js +180 -0
  162. package/usage-report/first-build-no-app-alarm.js.map +1 -0
  163. package/usage-report/warm-vibe-cache.js +1 -1
  164. package/usage-report/warm-vibe-cache.js.map +1 -1
  165. package/public/similar-vibes.d.ts +0 -11
  166. package/public/similar-vibes.js +0 -86
  167. package/public/similar-vibes.js.map +0 -1
@@ -1,86 +0,0 @@
1
- import { Result, Option, EventoResult, exception2Result } from "@adviser/cement";
2
- import { SIMILAR_VIBES_CANDIDATES, SIMILAR_VIBES_MAX_PROMPT_CHARS, reqSimilarVibes, } from "@vibes.diy/api-types";
3
- import { type } from "arktype";
4
- import { unwrapMsgBase } from "../unwrap-msg-base.js";
5
- import { checkAuth } from "../check-auth.js";
6
- import { resolveLivePublicPairs, titleIconKey } from "./home-feed-common.js";
7
- import { RESEARCH_SIMILAR_MAX_DISTANCE, queryResearchNeighborsPg } from "../intern/research-vector-arm.js";
8
- export const SIMILAR_VIBES_SCAN_FACTOR = 3;
9
- export function normalizeSimilarPromptText(raw) {
10
- return raw.replace(/\s+/g, " ").trim().slice(0, SIMILAR_VIBES_MAX_PROMPT_CHARS);
11
- }
12
- function emptyRes() {
13
- return { type: "vibes.diy.res-similar-vibes", generatedAt: new Date().toISOString(), items: [] };
14
- }
15
- export async function computeSimilarVibes(vctx, args) {
16
- const text = normalizeSimilarPromptText(args.promptText);
17
- if (text.length === 0)
18
- return emptyRes();
19
- if (vctx.sql.flavour !== "pg")
20
- return emptyRes();
21
- if (vctx.embedText === undefined)
22
- return emptyRes();
23
- const rEmbedding = await vctx.embedText(text);
24
- if (rEmbedding.isErr()) {
25
- vctx.logger.Warn().Err(rEmbedding.Err()).Msg("similar-vibes: embed failed, degrading to no neighbors");
26
- return emptyRes();
27
- }
28
- const rRows = await exception2Result(() => queryResearchNeighborsPg(vctx, rEmbedding.Ok(), SIMILAR_VIBES_CANDIDATES * SIMILAR_VIBES_SCAN_FACTOR));
29
- if (rRows.isErr()) {
30
- vctx.logger.Warn().Err(rRows.Err()).Msg("similar-vibes: neighbor query failed, degrading to no neighbors");
31
- return emptyRes();
32
- }
33
- const candidates = rRows
34
- .Ok()
35
- .filter((r) => Number.isFinite(r.distance) && r.distance <= RESEARCH_SIMILAR_MAX_DISTANCE)
36
- .filter((r) => !(r.ownerHandle === args.excludeOwnerHandle && r.appSlug === args.excludeAppSlug));
37
- if (candidates.length === 0)
38
- return emptyRes();
39
- const rLive = await exception2Result(() => resolveLivePublicPairs(vctx, candidates.map((c) => ({ ownerHandle: c.ownerHandle, appSlug: c.appSlug }))));
40
- if (rLive.isErr()) {
41
- vctx.logger.Warn().Err(rLive.Err()).Msg("similar-vibes: visibility gate failed, degrading to no neighbors");
42
- return emptyRes();
43
- }
44
- const live = rLive.Ok();
45
- const items = [];
46
- const seen = new Set();
47
- for (const c of candidates) {
48
- if (items.length >= SIMILAR_VIBES_CANDIDATES)
49
- break;
50
- const key = titleIconKey(c.ownerHandle, c.appSlug);
51
- if (seen.has(key))
52
- continue;
53
- const info = live.get(key);
54
- if (info === undefined)
55
- continue;
56
- seen.add(key);
57
- items.push({
58
- ownerHandle: c.ownerHandle,
59
- appSlug: c.appSlug,
60
- ...(info.title ? { title: info.title } : {}),
61
- ...(info.icon ? { icon: info.icon } : {}),
62
- });
63
- }
64
- return { type: "vibes.diy.res-similar-vibes", generatedAt: new Date().toISOString(), items };
65
- }
66
- export const similarVibesEvento = {
67
- hash: "vibes.diy.req-similar-vibes",
68
- validate: unwrapMsgBase(async (msg) => {
69
- const ret = reqSimilarVibes(msg.payload);
70
- if (ret instanceof type.errors)
71
- return Result.Ok(Option.None());
72
- return Result.Ok(Option.Some({ ...msg, payload: ret }));
73
- }),
74
- handle: checkAuth(async (ctx) => {
75
- const req = ctx.validated.payload;
76
- const vctx = ctx.ctx.getOrThrow("vibesApiCtx");
77
- const res = await computeSimilarVibes(vctx, {
78
- promptText: req.promptText,
79
- ...(req.excludeOwnerHandle !== undefined ? { excludeOwnerHandle: req.excludeOwnerHandle } : {}),
80
- ...(req.excludeAppSlug !== undefined ? { excludeAppSlug: req.excludeAppSlug } : {}),
81
- });
82
- await ctx.send.send(ctx, res);
83
- return Result.Ok(EventoResult.Continue);
84
- }),
85
- };
86
- //# sourceMappingURL=similar-vibes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"similar-vibes.js","sourceRoot":"","sources":["../../jsr/public/similar-vibes.ts"],"names":[],"mappings":"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"}