@indexnetwork/protocol 0.1.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/agents/chat.agent.d.ts +218 -0
- package/dist/agents/chat.agent.d.ts.map +1 -0
- package/dist/agents/chat.agent.js +884 -0
- package/dist/agents/chat.agent.js.map +1 -0
- package/dist/agents/chat.prompt.d.ts +18 -0
- package/dist/agents/chat.prompt.d.ts.map +1 -0
- package/dist/agents/chat.prompt.js +372 -0
- package/dist/agents/chat.prompt.js.map +1 -0
- package/dist/agents/chat.prompt.modules.d.ts +61 -0
- package/dist/agents/chat.prompt.modules.d.ts.map +1 -0
- package/dist/agents/chat.prompt.modules.js +366 -0
- package/dist/agents/chat.prompt.modules.js.map +1 -0
- package/dist/agents/chat.title.generator.d.ts +20 -0
- package/dist/agents/chat.title.generator.d.ts.map +1 -0
- package/dist/agents/chat.title.generator.js +66 -0
- package/dist/agents/chat.title.generator.js.map +1 -0
- package/dist/agents/home.categorizer.d.ts +28 -0
- package/dist/agents/home.categorizer.d.ts.map +1 -0
- package/dist/agents/home.categorizer.js +170 -0
- package/dist/agents/home.categorizer.js.map +1 -0
- package/dist/agents/hyde.generator.d.ts +27 -0
- package/dist/agents/hyde.generator.d.ts.map +1 -0
- package/dist/agents/hyde.generator.js +75 -0
- package/dist/agents/hyde.generator.js.map +1 -0
- package/dist/agents/hyde.strategies.d.ts +17 -0
- package/dist/agents/hyde.strategies.d.ts.map +1 -0
- package/dist/agents/hyde.strategies.js +29 -0
- package/dist/agents/hyde.strategies.js.map +1 -0
- package/dist/agents/intent.clarifier.d.ts +29 -0
- package/dist/agents/intent.clarifier.d.ts.map +1 -0
- package/dist/agents/intent.clarifier.js +186 -0
- package/dist/agents/intent.clarifier.js.map +1 -0
- package/dist/agents/intent.indexer.d.ts +77 -0
- package/dist/agents/intent.indexer.d.ts.map +1 -0
- package/dist/agents/intent.indexer.js +164 -0
- package/dist/agents/intent.indexer.js.map +1 -0
- package/dist/agents/intent.inferrer.d.ts +95 -0
- package/dist/agents/intent.inferrer.d.ts.map +1 -0
- package/dist/agents/intent.inferrer.js +238 -0
- package/dist/agents/intent.inferrer.js.map +1 -0
- package/dist/agents/intent.reconciler.d.ts +106 -0
- package/dist/agents/intent.reconciler.d.ts.map +1 -0
- package/dist/agents/intent.reconciler.js +184 -0
- package/dist/agents/intent.reconciler.js.map +1 -0
- package/dist/agents/intent.verifier.d.ts +97 -0
- package/dist/agents/intent.verifier.d.ts.map +1 -0
- package/dist/agents/intent.verifier.js +234 -0
- package/dist/agents/intent.verifier.js.map +1 -0
- package/dist/agents/invite.generator.d.ts +47 -0
- package/dist/agents/invite.generator.d.ts.map +1 -0
- package/dist/agents/invite.generator.js +56 -0
- package/dist/agents/invite.generator.js.map +1 -0
- package/dist/agents/lens.inferrer.d.ts +37 -0
- package/dist/agents/lens.inferrer.d.ts.map +1 -0
- package/dist/agents/lens.inferrer.js +98 -0
- package/dist/agents/lens.inferrer.js.map +1 -0
- package/dist/agents/model.config.d.ts +120 -0
- package/dist/agents/model.config.d.ts.map +1 -0
- package/dist/agents/model.config.js +76 -0
- package/dist/agents/model.config.js.map +1 -0
- package/dist/agents/negotiation.insights.generator.d.ts +32 -0
- package/dist/agents/negotiation.insights.generator.d.ts.map +1 -0
- package/dist/agents/negotiation.insights.generator.js +105 -0
- package/dist/agents/negotiation.insights.generator.js.map +1 -0
- package/dist/agents/negotiation.proposer.d.ts +26 -0
- package/dist/agents/negotiation.proposer.d.ts.map +1 -0
- package/dist/agents/negotiation.proposer.js +67 -0
- package/dist/agents/negotiation.proposer.js.map +1 -0
- package/dist/agents/negotiation.responder.d.ts +26 -0
- package/dist/agents/negotiation.responder.d.ts.map +1 -0
- package/dist/agents/negotiation.responder.js +71 -0
- package/dist/agents/negotiation.responder.js.map +1 -0
- package/dist/agents/opportunity.evaluator.d.ts +253 -0
- package/dist/agents/opportunity.evaluator.d.ts.map +1 -0
- package/dist/agents/opportunity.evaluator.js +413 -0
- package/dist/agents/opportunity.evaluator.js.map +1 -0
- package/dist/agents/opportunity.presenter.d.ts +115 -0
- package/dist/agents/opportunity.presenter.d.ts.map +1 -0
- package/dist/agents/opportunity.presenter.js +524 -0
- package/dist/agents/opportunity.presenter.js.map +1 -0
- package/dist/agents/profile.generator.d.ts +67 -0
- package/dist/agents/profile.generator.d.ts.map +1 -0
- package/dist/agents/profile.generator.js +97 -0
- package/dist/agents/profile.generator.js.map +1 -0
- package/dist/agents/profile.hyde.generator.d.ts +43 -0
- package/dist/agents/profile.hyde.generator.d.ts.map +1 -0
- package/dist/agents/profile.hyde.generator.js +113 -0
- package/dist/agents/profile.hyde.generator.js.map +1 -0
- package/dist/agents/suggestion.generator.d.ts +24 -0
- package/dist/agents/suggestion.generator.d.ts.map +1 -0
- package/dist/agents/suggestion.generator.js +96 -0
- package/dist/agents/suggestion.generator.js.map +1 -0
- package/dist/graphs/chat.graph.d.ts +312 -0
- package/dist/graphs/chat.graph.d.ts.map +1 -0
- package/dist/graphs/chat.graph.js +267 -0
- package/dist/graphs/chat.graph.js.map +1 -0
- package/dist/graphs/home.graph.d.ts +180 -0
- package/dist/graphs/home.graph.d.ts.map +1 -0
- package/dist/graphs/home.graph.js +598 -0
- package/dist/graphs/home.graph.js.map +1 -0
- package/dist/graphs/hyde.graph.d.ts +110 -0
- package/dist/graphs/hyde.graph.d.ts.map +1 -0
- package/dist/graphs/hyde.graph.js +235 -0
- package/dist/graphs/hyde.graph.js.map +1 -0
- package/dist/graphs/index.graph.d.ts +620 -0
- package/dist/graphs/index.graph.d.ts.map +1 -0
- package/dist/graphs/index.graph.js +226 -0
- package/dist/graphs/index.graph.js.map +1 -0
- package/dist/graphs/index_membership.graph.d.ts +250 -0
- package/dist/graphs/index_membership.graph.d.ts.map +1 -0
- package/dist/graphs/index_membership.graph.js +204 -0
- package/dist/graphs/index_membership.graph.js.map +1 -0
- package/dist/graphs/intent.graph.d.ts +490 -0
- package/dist/graphs/intent.graph.d.ts.map +1 -0
- package/dist/graphs/intent.graph.js +787 -0
- package/dist/graphs/intent.graph.js.map +1 -0
- package/dist/graphs/intent_index.graph.d.ts +396 -0
- package/dist/graphs/intent_index.graph.d.ts.map +1 -0
- package/dist/graphs/intent_index.graph.js +331 -0
- package/dist/graphs/intent_index.graph.js.map +1 -0
- package/dist/graphs/maintenance.graph.d.ts +177 -0
- package/dist/graphs/maintenance.graph.d.ts.map +1 -0
- package/dist/graphs/maintenance.graph.js +173 -0
- package/dist/graphs/maintenance.graph.js.map +1 -0
- package/dist/graphs/negotiation.graph.d.ts +819 -0
- package/dist/graphs/negotiation.graph.d.ts.map +1 -0
- package/dist/graphs/negotiation.graph.js +255 -0
- package/dist/graphs/negotiation.graph.js.map +1 -0
- package/dist/graphs/opportunity.graph.d.ts +1082 -0
- package/dist/graphs/opportunity.graph.d.ts.map +1 -0
- package/dist/graphs/opportunity.graph.js +2534 -0
- package/dist/graphs/opportunity.graph.js.map +1 -0
- package/dist/graphs/profile.graph.d.ts +617 -0
- package/dist/graphs/profile.graph.d.ts.map +1 -0
- package/dist/graphs/profile.graph.js +839 -0
- package/dist/graphs/profile.graph.js.map +1 -0
- package/dist/graphs/tests/chat.graph.mocks.d.ts +104 -0
- package/dist/graphs/tests/chat.graph.mocks.d.ts.map +1 -0
- package/dist/graphs/tests/chat.graph.mocks.js +225 -0
- package/dist/graphs/tests/chat.graph.mocks.js.map +1 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/auth.interface.d.ts +15 -0
- package/dist/interfaces/auth.interface.d.ts.map +1 -0
- package/dist/interfaces/auth.interface.js +2 -0
- package/dist/interfaces/auth.interface.js.map +1 -0
- package/dist/interfaces/cache.interface.d.ts +43 -0
- package/dist/interfaces/cache.interface.d.ts.map +1 -0
- package/dist/interfaces/cache.interface.js +6 -0
- package/dist/interfaces/cache.interface.js.map +1 -0
- package/dist/interfaces/chat-session.interface.d.ts +11 -0
- package/dist/interfaces/chat-session.interface.d.ts.map +1 -0
- package/dist/interfaces/chat-session.interface.js +2 -0
- package/dist/interfaces/chat-session.interface.js.map +1 -0
- package/dist/interfaces/contact.interface.d.ts +48 -0
- package/dist/interfaces/contact.interface.d.ts.map +1 -0
- package/dist/interfaces/contact.interface.js +2 -0
- package/dist/interfaces/contact.interface.js.map +1 -0
- package/dist/interfaces/database.interface.d.ts +1495 -0
- package/dist/interfaces/database.interface.d.ts.map +1 -0
- package/dist/interfaces/database.interface.js +2 -0
- package/dist/interfaces/database.interface.js.map +1 -0
- package/dist/interfaces/embedder.interface.d.ts +85 -0
- package/dist/interfaces/embedder.interface.d.ts.map +1 -0
- package/dist/interfaces/embedder.interface.js +5 -0
- package/dist/interfaces/embedder.interface.js.map +1 -0
- package/dist/interfaces/enrichment.interface.d.ts +40 -0
- package/dist/interfaces/enrichment.interface.d.ts.map +1 -0
- package/dist/interfaces/enrichment.interface.js +2 -0
- package/dist/interfaces/enrichment.interface.js.map +1 -0
- package/dist/interfaces/integration.interface.d.ts +91 -0
- package/dist/interfaces/integration.interface.d.ts.map +1 -0
- package/dist/interfaces/integration.interface.js +2 -0
- package/dist/interfaces/integration.interface.js.map +1 -0
- package/dist/interfaces/queue.interface.d.ts +17 -0
- package/dist/interfaces/queue.interface.d.ts.map +1 -0
- package/dist/interfaces/queue.interface.js +5 -0
- package/dist/interfaces/queue.interface.js.map +1 -0
- package/dist/interfaces/scraper.interface.d.ts +31 -0
- package/dist/interfaces/scraper.interface.d.ts.map +1 -0
- package/dist/interfaces/scraper.interface.js +2 -0
- package/dist/interfaces/scraper.interface.js.map +1 -0
- package/dist/interfaces/storage.interface.d.ts +46 -0
- package/dist/interfaces/storage.interface.d.ts.map +1 -0
- package/dist/interfaces/storage.interface.js +6 -0
- package/dist/interfaces/storage.interface.js.map +1 -0
- package/dist/mcp/mcp.server.d.ts +29 -0
- package/dist/mcp/mcp.server.d.ts.map +1 -0
- package/dist/mcp/mcp.server.js +171 -0
- package/dist/mcp/mcp.server.js.map +1 -0
- package/dist/states/chat.state.d.ts +126 -0
- package/dist/states/chat.state.d.ts.map +1 -0
- package/dist/states/chat.state.js +112 -0
- package/dist/states/chat.state.js.map +1 -0
- package/dist/states/home.state.d.ts +100 -0
- package/dist/states/home.state.d.ts.map +1 -0
- package/dist/states/home.state.js +74 -0
- package/dist/states/home.state.js.map +1 -0
- package/dist/states/hyde.state.d.ts +54 -0
- package/dist/states/hyde.state.d.ts.map +1 -0
- package/dist/states/hyde.state.js +66 -0
- package/dist/states/hyde.state.js.map +1 -0
- package/dist/states/index.state.d.ts +179 -0
- package/dist/states/index.state.d.ts.map +1 -0
- package/dist/states/index.state.js +56 -0
- package/dist/states/index.state.js.map +1 -0
- package/dist/states/index_membership.state.d.ts +77 -0
- package/dist/states/index_membership.state.d.ts.map +1 -0
- package/dist/states/index_membership.state.js +43 -0
- package/dist/states/index_membership.state.js.map +1 -0
- package/dist/states/intent.state.d.ts +203 -0
- package/dist/states/intent.state.d.ts.map +1 -0
- package/dist/states/intent.state.js +153 -0
- package/dist/states/intent.state.js.map +1 -0
- package/dist/states/intent_index.state.d.ts +148 -0
- package/dist/states/intent_index.state.d.ts.map +1 -0
- package/dist/states/intent_index.state.js +100 -0
- package/dist/states/intent_index.state.js.map +1 -0
- package/dist/states/maintenance.state.d.ts +36 -0
- package/dist/states/maintenance.state.d.ts.map +1 -0
- package/dist/states/maintenance.state.js +56 -0
- package/dist/states/maintenance.state.js.map +1 -0
- package/dist/states/negotiation.state.d.ts +230 -0
- package/dist/states/negotiation.state.d.ts.map +1 -0
- package/dist/states/negotiation.state.js +82 -0
- package/dist/states/negotiation.state.js.map +1 -0
- package/dist/states/opportunity.state.d.ts +300 -0
- package/dist/states/opportunity.state.d.ts.map +1 -0
- package/dist/states/opportunity.state.js +207 -0
- package/dist/states/opportunity.state.js.map +1 -0
- package/dist/states/profile.state.d.ts +172 -0
- package/dist/states/profile.state.d.ts.map +1 -0
- package/dist/states/profile.state.js +133 -0
- package/dist/states/profile.state.js.map +1 -0
- package/dist/streamers/chat.streamer.d.ts +55 -0
- package/dist/streamers/chat.streamer.d.ts.map +1 -0
- package/dist/streamers/chat.streamer.js +186 -0
- package/dist/streamers/chat.streamer.js.map +1 -0
- package/dist/streamers/index.d.ts +3 -0
- package/dist/streamers/index.d.ts.map +1 -0
- package/dist/streamers/index.js +3 -0
- package/dist/streamers/index.js.map +1 -0
- package/dist/streamers/response.streamer.d.ts +36 -0
- package/dist/streamers/response.streamer.d.ts.map +1 -0
- package/dist/streamers/response.streamer.js +46 -0
- package/dist/streamers/response.streamer.js.map +1 -0
- package/dist/support/chat.utils.d.ts +42 -0
- package/dist/support/chat.utils.d.ts.map +1 -0
- package/dist/support/chat.utils.js +89 -0
- package/dist/support/chat.utils.js.map +1 -0
- package/dist/support/debug-meta.sanitizer.d.ts +18 -0
- package/dist/support/debug-meta.sanitizer.d.ts.map +1 -0
- package/dist/support/debug-meta.sanitizer.js +82 -0
- package/dist/support/debug-meta.sanitizer.js.map +1 -0
- package/dist/support/feed.health.d.ts +32 -0
- package/dist/support/feed.health.d.ts.map +1 -0
- package/dist/support/feed.health.js +76 -0
- package/dist/support/feed.health.js.map +1 -0
- package/dist/support/introducer.discovery.d.ts +78 -0
- package/dist/support/introducer.discovery.d.ts.map +1 -0
- package/dist/support/introducer.discovery.js +101 -0
- package/dist/support/introducer.discovery.js.map +1 -0
- package/dist/support/log.d.ts +65 -0
- package/dist/support/log.d.ts.map +1 -0
- package/dist/support/log.js +76 -0
- package/dist/support/log.js.map +1 -0
- package/dist/support/lucide.icon-catalog.d.ts +22 -0
- package/dist/support/lucide.icon-catalog.d.ts.map +1 -0
- package/dist/support/lucide.icon-catalog.js +101 -0
- package/dist/support/lucide.icon-catalog.js.map +1 -0
- package/dist/support/opportunity.card-text.d.ts +39 -0
- package/dist/support/opportunity.card-text.d.ts.map +1 -0
- package/dist/support/opportunity.card-text.js +333 -0
- package/dist/support/opportunity.card-text.js.map +1 -0
- package/dist/support/opportunity.constants.d.ts +9 -0
- package/dist/support/opportunity.constants.d.ts.map +1 -0
- package/dist/support/opportunity.constants.js +11 -0
- package/dist/support/opportunity.constants.js.map +1 -0
- package/dist/support/opportunity.discover.d.ts +144 -0
- package/dist/support/opportunity.discover.d.ts.map +1 -0
- package/dist/support/opportunity.discover.js +610 -0
- package/dist/support/opportunity.discover.js.map +1 -0
- package/dist/support/opportunity.enricher.d.ts +44 -0
- package/dist/support/opportunity.enricher.d.ts.map +1 -0
- package/dist/support/opportunity.enricher.js +245 -0
- package/dist/support/opportunity.enricher.js.map +1 -0
- package/dist/support/opportunity.persist.d.ts +39 -0
- package/dist/support/opportunity.persist.d.ts.map +1 -0
- package/dist/support/opportunity.persist.js +63 -0
- package/dist/support/opportunity.persist.js.map +1 -0
- package/dist/support/opportunity.presentation.d.ts +21 -0
- package/dist/support/opportunity.presentation.d.ts.map +1 -0
- package/dist/support/opportunity.presentation.js +75 -0
- package/dist/support/opportunity.presentation.js.map +1 -0
- package/dist/support/opportunity.sanitize.d.ts +18 -0
- package/dist/support/opportunity.sanitize.d.ts.map +1 -0
- package/dist/support/opportunity.sanitize.js +89 -0
- package/dist/support/opportunity.sanitize.js.map +1 -0
- package/dist/support/opportunity.utils.d.ts +99 -0
- package/dist/support/opportunity.utils.d.ts.map +1 -0
- package/dist/support/opportunity.utils.js +184 -0
- package/dist/support/opportunity.utils.js.map +1 -0
- package/dist/support/performance.d.ts +19 -0
- package/dist/support/performance.d.ts.map +1 -0
- package/dist/support/performance.js +43 -0
- package/dist/support/performance.js.map +1 -0
- package/dist/support/profile.enrichment-display-name.d.ts +16 -0
- package/dist/support/profile.enrichment-display-name.d.ts.map +1 -0
- package/dist/support/profile.enrichment-display-name.js +22 -0
- package/dist/support/profile.enrichment-display-name.js.map +1 -0
- package/dist/support/protocol.logger.d.ts +22 -0
- package/dist/support/protocol.logger.d.ts.map +1 -0
- package/dist/support/protocol.logger.js +44 -0
- package/dist/support/protocol.logger.js.map +1 -0
- package/dist/support/request-context.d.ts +19 -0
- package/dist/support/request-context.d.ts.map +1 -0
- package/dist/support/request-context.js +7 -0
- package/dist/support/request-context.js.map +1 -0
- package/dist/tools/contact.tools.d.ts +7 -0
- package/dist/tools/contact.tools.d.ts.map +1 -0
- package/dist/tools/contact.tools.js +115 -0
- package/dist/tools/contact.tools.js.map +1 -0
- package/dist/tools/index.d.ts +17 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +140 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/index.tools.d.ts +3 -0
- package/dist/tools/index.tools.d.ts.map +1 -0
- package/dist/tools/index.tools.js +423 -0
- package/dist/tools/index.tools.js.map +1 -0
- package/dist/tools/integration.tools.d.ts +13 -0
- package/dist/tools/integration.tools.d.ts.map +1 -0
- package/dist/tools/integration.tools.js +77 -0
- package/dist/tools/integration.tools.js.map +1 -0
- package/dist/tools/intent.tools.d.ts +3 -0
- package/dist/tools/intent.tools.d.ts.map +1 -0
- package/dist/tools/intent.tools.js +458 -0
- package/dist/tools/intent.tools.js.map +1 -0
- package/dist/tools/opportunity.tools.d.ts +44 -0
- package/dist/tools/opportunity.tools.d.ts.map +1 -0
- package/dist/tools/opportunity.tools.js +814 -0
- package/dist/tools/opportunity.tools.js.map +1 -0
- package/dist/tools/profile.tools.d.ts +3 -0
- package/dist/tools/profile.tools.d.ts.map +1 -0
- package/dist/tools/profile.tools.js +513 -0
- package/dist/tools/profile.tools.js.map +1 -0
- package/dist/tools/tool.helpers.d.ts +225 -0
- package/dist/tools/tool.helpers.d.ts.map +1 -0
- package/dist/tools/tool.helpers.js +172 -0
- package/dist/tools/tool.helpers.js.map +1 -0
- package/dist/tools/tool.registry.d.ts +12 -0
- package/dist/tools/tool.registry.d.ts.map +1 -0
- package/dist/tools/tool.registry.js +62 -0
- package/dist/tools/tool.registry.js.map +1 -0
- package/dist/tools/utility.tools.d.ts +3 -0
- package/dist/tools/utility.tools.d.ts.map +1 -0
- package/dist/tools/utility.tools.js +107 -0
- package/dist/tools/utility.tools.js.map +1 -0
- package/dist/types/chat-streaming.types.d.ts +472 -0
- package/dist/types/chat-streaming.types.d.ts.map +1 -0
- package/dist/types/chat-streaming.types.js +260 -0
- package/dist/types/chat-streaming.types.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opportunity.tools.js","sourceRoot":"","sources":["../../src/tools/opportunity.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.tools.d.ts","sourceRoot":"","sources":["../../src/tools/profile.tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAkB9D,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,iCA8hBxE"}
|
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { requestContext } from "../support/request-context.js";
|
|
3
|
+
import { success, error, needsClarification, UUID_REGEX } from "./tool.helpers.js";
|
|
4
|
+
import { protocolLogger } from "../support/protocol.logger.js";
|
|
5
|
+
const logger = protocolLogger("ChatTools:Profile");
|
|
6
|
+
function isMeaningfulEnrichment(enrichment) {
|
|
7
|
+
return !!enrichment &&
|
|
8
|
+
enrichment.confidentMatch &&
|
|
9
|
+
(enrichment.identity.bio.trim().length > 0 ||
|
|
10
|
+
enrichment.narrative.context.trim().length > 0 ||
|
|
11
|
+
enrichment.attributes.skills.length > 0 ||
|
|
12
|
+
enrichment.attributes.interests.length > 0);
|
|
13
|
+
}
|
|
14
|
+
export function createProfileTools(defineTool, deps) {
|
|
15
|
+
const { userDb, systemDb, database, graphs, enricher } = deps;
|
|
16
|
+
async function enrichFromUserRecord(user) {
|
|
17
|
+
return enricher.enrichUserProfile({
|
|
18
|
+
name: user.name || undefined,
|
|
19
|
+
email: user.email || undefined,
|
|
20
|
+
linkedin: user.socials?.linkedin || undefined,
|
|
21
|
+
twitter: user.socials?.x || undefined,
|
|
22
|
+
github: user.socials?.github || undefined,
|
|
23
|
+
websites: user.socials?.websites?.length ? user.socials.websites : undefined,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const readUserProfiles = defineTool({
|
|
27
|
+
name: "read_user_profiles",
|
|
28
|
+
description: "Find or read user profiles. When the user asks to find, look up, or learn about a specific person by name, use `query` — this is the primary way to look up people by name. With `query`: finds members by name (case-insensitive) across the user's indexes (or a specific index if `indexId` also provided). With `userId`: returns that user's profile. With `indexId` alone: returns profiles of all members in that index. In an index-scoped chat, no args returns the current user's profile. Outside an index-scoped chat, at least one parameter is required.",
|
|
29
|
+
querySchema: z.object({
|
|
30
|
+
userId: z.string().optional().describe("Optional user ID to fetch a specific user's profile"),
|
|
31
|
+
indexId: z.string().optional().describe("Optional index ID to fetch profiles of all members in that index"),
|
|
32
|
+
query: z.string().optional().describe("Name to find (case-insensitive substring match). Searches across the user's indexes, or within a specific index if indexId is also provided."),
|
|
33
|
+
}),
|
|
34
|
+
handler: async ({ context, query }) => {
|
|
35
|
+
const effectiveIndexId = query.indexId?.trim() || undefined;
|
|
36
|
+
const targetUserId = query.userId?.trim() || undefined;
|
|
37
|
+
const nameQuery = query.query?.trim() || undefined;
|
|
38
|
+
if (effectiveIndexId && !UUID_REGEX.test(effectiveIndexId)) {
|
|
39
|
+
return error("Invalid index ID format. Use the exact UUID from read_indexes.");
|
|
40
|
+
}
|
|
41
|
+
// --- Name search mode: query provided → find members by name ---
|
|
42
|
+
if (nameQuery) {
|
|
43
|
+
const pattern = nameQuery.toLowerCase();
|
|
44
|
+
const MAX_RESULTS = 20;
|
|
45
|
+
// When chat is index-scoped, restrict name search to that index
|
|
46
|
+
const searchIndexId = effectiveIndexId || context.indexId || undefined;
|
|
47
|
+
let candidates;
|
|
48
|
+
if (searchIndexId) {
|
|
49
|
+
// Scoped to a specific index
|
|
50
|
+
if (context.indexId && searchIndexId !== context.indexId) {
|
|
51
|
+
return error(context.indexName
|
|
52
|
+
? `This chat is scoped to ${context.indexName}. You can only look up people in this community.`
|
|
53
|
+
: `This chat is scoped to this index. You can only look up people in this community.`);
|
|
54
|
+
}
|
|
55
|
+
const callerIsMember = await systemDb.isIndexMember(searchIndexId, context.userId);
|
|
56
|
+
if (!callerIsMember) {
|
|
57
|
+
return error("You can only look up people in indexes you are a member of.");
|
|
58
|
+
}
|
|
59
|
+
const members = await systemDb.getIndexMembers(searchIndexId);
|
|
60
|
+
candidates = members.map((m) => ({ userId: m.userId, name: m.name, avatar: m.avatar ?? null }));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Search across all user's indexes
|
|
64
|
+
candidates = await systemDb.getMembersFromScope();
|
|
65
|
+
}
|
|
66
|
+
logger.verbose("Name search candidates", {
|
|
67
|
+
query: nameQuery,
|
|
68
|
+
pattern,
|
|
69
|
+
candidateCount: candidates.length,
|
|
70
|
+
userId: context.userId,
|
|
71
|
+
});
|
|
72
|
+
// Filter by name (case-insensitive substring), exclude self
|
|
73
|
+
const matched = candidates
|
|
74
|
+
.filter((c) => c.userId !== context.userId && c.name.toLowerCase().includes(pattern))
|
|
75
|
+
.slice(0, MAX_RESULTS);
|
|
76
|
+
if (matched.length === 0) {
|
|
77
|
+
return success({ query: nameQuery, matchCount: 0, profiles: [], message: "No members found matching that name." });
|
|
78
|
+
}
|
|
79
|
+
// Fetch full profiles for matches
|
|
80
|
+
const profiles = await Promise.all(matched.map(async (m) => {
|
|
81
|
+
const profile = await systemDb.getProfile(m.userId);
|
|
82
|
+
return {
|
|
83
|
+
userId: m.userId,
|
|
84
|
+
name: m.name,
|
|
85
|
+
hasProfile: !!profile,
|
|
86
|
+
profile: profile
|
|
87
|
+
? {
|
|
88
|
+
name: profile.identity.name,
|
|
89
|
+
bio: profile.identity.bio,
|
|
90
|
+
location: profile.identity.location,
|
|
91
|
+
skills: profile.attributes.skills,
|
|
92
|
+
interests: profile.attributes.interests,
|
|
93
|
+
}
|
|
94
|
+
: undefined,
|
|
95
|
+
};
|
|
96
|
+
}));
|
|
97
|
+
return success({ query: nameQuery, matchCount: profiles.length, profiles });
|
|
98
|
+
}
|
|
99
|
+
// Guard: when chat is NOT index-scoped and no userId/indexId provided, disallow
|
|
100
|
+
if (!effectiveIndexId && !targetUserId && !context.indexId) {
|
|
101
|
+
return error("Please provide a userId, indexId, or query. Outside of an index-scoped chat, read_user_profiles requires at least one of these parameters. To read your own profile, pass your own userId.");
|
|
102
|
+
}
|
|
103
|
+
// --- Mode 3: indexId provided → fetch all member profiles ---
|
|
104
|
+
if (effectiveIndexId) {
|
|
105
|
+
// Strict scope enforcement: when chat is index-scoped, only allow querying that index
|
|
106
|
+
if (context.indexId && effectiveIndexId !== context.indexId) {
|
|
107
|
+
return error(context.indexName
|
|
108
|
+
? `This chat is scoped to ${context.indexName}. You can only read profiles from this community.`
|
|
109
|
+
: `This chat is scoped to this index. You can only read profiles from this community.`);
|
|
110
|
+
}
|
|
111
|
+
// Verify the caller is a member of the index they're querying
|
|
112
|
+
const callerIsMember = await systemDb.isIndexMember(effectiveIndexId, context.userId);
|
|
113
|
+
if (!callerIsMember) {
|
|
114
|
+
return error("You can only read profiles from indexes you are a member of.");
|
|
115
|
+
}
|
|
116
|
+
// Use systemDb for cross-user access within shared indexes
|
|
117
|
+
const members = await systemDb.getIndexMembers(effectiveIndexId);
|
|
118
|
+
const profiles = await Promise.all(members.map(async (member) => {
|
|
119
|
+
const profile = await systemDb.getProfile(member.userId);
|
|
120
|
+
return {
|
|
121
|
+
userId: member.userId,
|
|
122
|
+
name: member.name,
|
|
123
|
+
hasProfile: !!profile,
|
|
124
|
+
profile: profile
|
|
125
|
+
? {
|
|
126
|
+
name: profile.identity.name,
|
|
127
|
+
bio: profile.identity.bio,
|
|
128
|
+
location: profile.identity.location,
|
|
129
|
+
skills: profile.attributes.skills,
|
|
130
|
+
interests: profile.attributes.interests,
|
|
131
|
+
}
|
|
132
|
+
: undefined,
|
|
133
|
+
};
|
|
134
|
+
}));
|
|
135
|
+
return success({ indexId: effectiveIndexId, memberCount: members.length, profiles });
|
|
136
|
+
}
|
|
137
|
+
// --- Mode 2: userId provided (different user) → fetch single profile directly ---
|
|
138
|
+
if (targetUserId && targetUserId !== context.userId) {
|
|
139
|
+
// Strict scope enforcement: when chat is index-scoped, verify user is in that index
|
|
140
|
+
if (context.indexId) {
|
|
141
|
+
const isInScopedIndex = await systemDb.isIndexMember(context.indexId, targetUserId);
|
|
142
|
+
if (!isInScopedIndex) {
|
|
143
|
+
return error(context.indexName
|
|
144
|
+
? `This chat is scoped to ${context.indexName}. You can only read profiles of members in this community.`
|
|
145
|
+
: `This chat is scoped to this index. You can only read profiles of members in this community.`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Use systemDb for cross-user profile access (requires shared index)
|
|
149
|
+
const profile = await systemDb.getProfile(targetUserId);
|
|
150
|
+
if (profile) {
|
|
151
|
+
return success({
|
|
152
|
+
hasProfile: true,
|
|
153
|
+
profile: {
|
|
154
|
+
name: profile.identity.name,
|
|
155
|
+
bio: profile.identity.bio,
|
|
156
|
+
location: profile.identity.location,
|
|
157
|
+
skills: profile.attributes.skills,
|
|
158
|
+
interests: profile.attributes.interests,
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return success({ hasProfile: false, message: "This user does not have a profile yet." });
|
|
163
|
+
}
|
|
164
|
+
// --- Mode 1: No args / self → use profileGraph query (returns id for updates) ---
|
|
165
|
+
const _readProfileGraphStart = Date.now();
|
|
166
|
+
const _readProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
|
|
167
|
+
_readProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
|
|
168
|
+
const result = await graphs.profile.invoke({
|
|
169
|
+
userId: context.userId,
|
|
170
|
+
operationMode: 'query',
|
|
171
|
+
});
|
|
172
|
+
const _readProfileGraphMs = Date.now() - _readProfileGraphStart;
|
|
173
|
+
_readProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _readProfileGraphMs });
|
|
174
|
+
if (result.readResult) {
|
|
175
|
+
return success({ ...result.readResult, _graphTimings: [{ name: 'profile', durationMs: _readProfileGraphMs, agents: result.agentTimings ?? [] }] });
|
|
176
|
+
}
|
|
177
|
+
if (result.profile) {
|
|
178
|
+
return success({
|
|
179
|
+
hasProfile: true,
|
|
180
|
+
profile: {
|
|
181
|
+
name: result.profile.identity.name,
|
|
182
|
+
bio: result.profile.identity.bio,
|
|
183
|
+
location: result.profile.identity.location,
|
|
184
|
+
skills: result.profile.attributes.skills,
|
|
185
|
+
interests: result.profile.attributes.interests,
|
|
186
|
+
},
|
|
187
|
+
_graphTimings: [{ name: 'profile', durationMs: _readProfileGraphMs, agents: result.agentTimings ?? [] }],
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
return success({
|
|
191
|
+
hasProfile: false,
|
|
192
|
+
message: "You don't have a profile yet. Would you like to create one? You can share your LinkedIn, GitHub, or X/Twitter profile, or just tell me about yourself.",
|
|
193
|
+
_graphTimings: [{ name: 'profile', durationMs: _readProfileGraphMs, agents: result.agentTimings ?? [] }],
|
|
194
|
+
});
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
const createUserProfile = defineTool({
|
|
198
|
+
name: "create_user_profile",
|
|
199
|
+
description: "Auto-generates (or regenerates) a profile from the user's account data (name, email, social links) via web lookup, or from explicit text when the user provides a short description (e.g. role, skills, location). When the user provides a profile URL in their message, pass it in the matching parameter (e.g. linkedinUrl) so that URL is used for this request, not their saved links. Works whether or not the user already has a profile. Call with no args first; if it returns missing fields, ask the user conversationally for their full name and/or social URLs, then call again with those fields filled in. During onboarding, the first call returns a preview without saving. When the user confirms, call again with confirm=true to save.",
|
|
200
|
+
querySchema: z.object({
|
|
201
|
+
name: z.string().optional().describe("User's full name (first and last), if provided by the user"),
|
|
202
|
+
linkedinUrl: z.string().optional().describe("LinkedIn profile URL"),
|
|
203
|
+
githubUrl: z.string().optional().describe("GitHub profile URL"),
|
|
204
|
+
twitterUrl: z.string().optional().describe("X/Twitter profile URL"),
|
|
205
|
+
websites: z.array(z.string()).optional().describe("Personal or portfolio website URLs"),
|
|
206
|
+
location: z.string().optional().describe("User's location (city, country)"),
|
|
207
|
+
bioOrDescription: z.string().optional().describe("Explicit profile text from the user (e.g. 'software engineer, AI/ML, SF Bay Area'); creates or updates profile from this text only, no scraping"),
|
|
208
|
+
confirm: z.boolean().optional().describe("Pass true to save a previously previewed profile during onboarding"),
|
|
209
|
+
}),
|
|
210
|
+
handler: async ({ context, query }) => {
|
|
211
|
+
// Persist user-info fields (name, location, socials) to users table before any branching.
|
|
212
|
+
// This ensures users.name is always updated regardless of which code path runs.
|
|
213
|
+
// Trim all string fields to avoid persisting whitespace-only values.
|
|
214
|
+
const name = query.name?.trim();
|
|
215
|
+
const location = query.location?.trim();
|
|
216
|
+
const linkedinUrl = query.linkedinUrl?.trim();
|
|
217
|
+
const githubUrl = query.githubUrl?.trim();
|
|
218
|
+
const twitterUrl = query.twitterUrl?.trim();
|
|
219
|
+
const websites = query.websites?.map((url) => url.trim()).filter(Boolean);
|
|
220
|
+
const hasSocialsFromQuery = Boolean(linkedinUrl || githubUrl || twitterUrl || websites?.length);
|
|
221
|
+
if (name || location || hasSocialsFromQuery) {
|
|
222
|
+
const socialsUpdate = {};
|
|
223
|
+
if (linkedinUrl)
|
|
224
|
+
socialsUpdate.linkedin = linkedinUrl;
|
|
225
|
+
if (githubUrl)
|
|
226
|
+
socialsUpdate.github = githubUrl;
|
|
227
|
+
if (twitterUrl)
|
|
228
|
+
socialsUpdate.x = twitterUrl;
|
|
229
|
+
if (websites?.length)
|
|
230
|
+
socialsUpdate.websites = websites;
|
|
231
|
+
await userDb.updateUser({
|
|
232
|
+
...(name ? { name } : {}),
|
|
233
|
+
...(location ? { location } : {}),
|
|
234
|
+
...(hasSocialsFromQuery ? { socials: socialsUpdate } : {}),
|
|
235
|
+
});
|
|
236
|
+
logger.verbose("Persisted user-info fields to user record", { userId: context.userId });
|
|
237
|
+
}
|
|
238
|
+
const isOnboarding = !(context.user.onboarding?.completedAt);
|
|
239
|
+
if (isOnboarding) {
|
|
240
|
+
const existingProfile = await userDb.getProfile();
|
|
241
|
+
if (existingProfile) {
|
|
242
|
+
return success({
|
|
243
|
+
alreadyExists: true,
|
|
244
|
+
message: "Profile already exists. If the user confirmed it, call complete_onboarding() to finish setup. If they want changes, use create_user_profile(bioOrDescription=\"...\", confirm=true).",
|
|
245
|
+
profile: {
|
|
246
|
+
name: existingProfile.identity.name,
|
|
247
|
+
bio: existingProfile.identity.bio,
|
|
248
|
+
location: existingProfile.identity.location,
|
|
249
|
+
skills: existingProfile.attributes.skills,
|
|
250
|
+
interests: existingProfile.attributes.interests,
|
|
251
|
+
},
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
// Preview mode: enrich and persist enrichment results, but don't generate full profile
|
|
255
|
+
if (!query.confirm) {
|
|
256
|
+
try {
|
|
257
|
+
const user = await userDb.getUser();
|
|
258
|
+
const enrichment = user ? await enrichFromUserRecord(user) : null;
|
|
259
|
+
if (isMeaningfulEnrichment(enrichment)) {
|
|
260
|
+
// Persist enrichment data to user record so confirm path has it
|
|
261
|
+
const updatePayload = {};
|
|
262
|
+
// No ghost guard needed: onboarding users are active (non-ghost) and
|
|
263
|
+
// haven't confirmed a name yet — the enriched name is a preview they accept or edit.
|
|
264
|
+
if (enrichment.identity.name?.trim()) {
|
|
265
|
+
updatePayload.name = enrichment.identity.name.trim();
|
|
266
|
+
}
|
|
267
|
+
if (enrichment.identity.bio?.trim())
|
|
268
|
+
updatePayload.intro = enrichment.identity.bio.trim();
|
|
269
|
+
if (enrichment.identity.location?.trim())
|
|
270
|
+
updatePayload.location = enrichment.identity.location.trim();
|
|
271
|
+
const socials = {};
|
|
272
|
+
if (enrichment.socials.twitter)
|
|
273
|
+
socials.x = enrichment.socials.twitter;
|
|
274
|
+
if (enrichment.socials.linkedin)
|
|
275
|
+
socials.linkedin = enrichment.socials.linkedin;
|
|
276
|
+
if (enrichment.socials.github)
|
|
277
|
+
socials.github = enrichment.socials.github;
|
|
278
|
+
if (enrichment.socials.websites?.length)
|
|
279
|
+
socials.websites = enrichment.socials.websites;
|
|
280
|
+
if (Object.keys(socials).length > 0)
|
|
281
|
+
updatePayload.socials = socials;
|
|
282
|
+
if (Object.keys(updatePayload).length > 0)
|
|
283
|
+
await userDb.updateUser(updatePayload);
|
|
284
|
+
return success({
|
|
285
|
+
preview: true,
|
|
286
|
+
message: "Profile preview generated. Call create_user_profile(confirm=true) to save.",
|
|
287
|
+
profile: {
|
|
288
|
+
name: enrichment.identity.name,
|
|
289
|
+
bio: enrichment.identity.bio,
|
|
290
|
+
location: enrichment.identity.location,
|
|
291
|
+
skills: enrichment.attributes.skills,
|
|
292
|
+
interests: enrichment.attributes.interests,
|
|
293
|
+
},
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
catch (err) {
|
|
298
|
+
logger.warn("Enrichment preview failed", {
|
|
299
|
+
error: err instanceof Error ? err.message : String(err),
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
return needsClarification({
|
|
303
|
+
missingFields: ['bio_or_social_urls'],
|
|
304
|
+
message: "I couldn't find enough public info. Could you share a short description of yourself, or a LinkedIn/GitHub/X profile link?",
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
// Confirm mode: invoke graph in generate mode (enrichment data already persisted during preview)
|
|
308
|
+
// Do NOT re-run enrichFromUserRecord — the graph's autoGenerateNode handles enrichment
|
|
309
|
+
// from the (now well-populated) user record, avoiding non-deterministic drift.
|
|
310
|
+
try {
|
|
311
|
+
const _confirmGraphStart = Date.now();
|
|
312
|
+
const _confirmTraceEmitter = requestContext.getStore()?.traceEmitter;
|
|
313
|
+
_confirmTraceEmitter?.({ type: "graph_start", name: "profile" });
|
|
314
|
+
const result = await graphs.profile.invoke({
|
|
315
|
+
userId: context.userId,
|
|
316
|
+
operationMode: 'generate',
|
|
317
|
+
});
|
|
318
|
+
const _confirmGraphMs = Date.now() - _confirmGraphStart;
|
|
319
|
+
_confirmTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _confirmGraphMs });
|
|
320
|
+
if (result.error)
|
|
321
|
+
return error(result.error);
|
|
322
|
+
if (result.profile) {
|
|
323
|
+
return success({
|
|
324
|
+
created: true,
|
|
325
|
+
message: "Profile saved.",
|
|
326
|
+
profile: {
|
|
327
|
+
name: result.profile.identity.name,
|
|
328
|
+
bio: result.profile.identity.bio,
|
|
329
|
+
location: result.profile.identity.location,
|
|
330
|
+
skills: result.profile.attributes.skills,
|
|
331
|
+
interests: result.profile.attributes.interests,
|
|
332
|
+
},
|
|
333
|
+
_graphTimings: [{ name: 'profile', durationMs: _confirmGraphMs, agents: result.agentTimings ?? [] }],
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
catch (err) {
|
|
338
|
+
logger.warn("Profile generation on confirm failed, falling back to full graph", {
|
|
339
|
+
error: err instanceof Error ? err.message : String(err),
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
// Fallback: graph invocation failed on confirm, fall through to full graph invocation
|
|
343
|
+
}
|
|
344
|
+
const hasBioOrDescription = !!query.bioOrDescription?.trim();
|
|
345
|
+
if (hasBioOrDescription) {
|
|
346
|
+
// Create/update profile from user's explicit text only; do not persist to user record
|
|
347
|
+
// Include name and location in the input if provided so the ProfileGenerator can use them
|
|
348
|
+
const inputParts = [];
|
|
349
|
+
if (name)
|
|
350
|
+
inputParts.push(`Name: ${name}`);
|
|
351
|
+
if (location)
|
|
352
|
+
inputParts.push(`Location: ${location}`);
|
|
353
|
+
inputParts.push(query.bioOrDescription.trim());
|
|
354
|
+
const profileInput = inputParts.join('\n');
|
|
355
|
+
const _bioProfileGraphStart = Date.now();
|
|
356
|
+
const _bioProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
|
|
357
|
+
_bioProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
|
|
358
|
+
const result = await graphs.profile.invoke({
|
|
359
|
+
userId: context.userId,
|
|
360
|
+
operationMode: 'write',
|
|
361
|
+
input: profileInput,
|
|
362
|
+
forceUpdate: true,
|
|
363
|
+
});
|
|
364
|
+
const _bioProfileGraphMs = Date.now() - _bioProfileGraphStart;
|
|
365
|
+
_bioProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _bioProfileGraphMs });
|
|
366
|
+
if (result.error) {
|
|
367
|
+
return error(result.error);
|
|
368
|
+
}
|
|
369
|
+
if (result.profile) {
|
|
370
|
+
return success({
|
|
371
|
+
created: true,
|
|
372
|
+
message: "Profile created/updated with the information you provided.",
|
|
373
|
+
profile: {
|
|
374
|
+
name: result.profile.identity.name,
|
|
375
|
+
bio: result.profile.identity.bio,
|
|
376
|
+
location: result.profile.identity.location,
|
|
377
|
+
skills: result.profile.attributes.skills,
|
|
378
|
+
interests: result.profile.attributes.interests,
|
|
379
|
+
},
|
|
380
|
+
_graphTimings: [{ name: 'profile', durationMs: _bioProfileGraphMs, agents: result.agentTimings ?? [] }],
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
return success({
|
|
384
|
+
created: true,
|
|
385
|
+
message: "Profile created/updated with the information you provided.",
|
|
386
|
+
_graphTimings: [{ name: 'profile', durationMs: _bioProfileGraphMs, agents: result.agentTimings ?? [] }],
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
// Invoke profile graph in generate mode (uses enrichUserProfile Chat API)
|
|
390
|
+
const _generateProfileGraphStart = Date.now();
|
|
391
|
+
const _generateProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
|
|
392
|
+
_generateProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
|
|
393
|
+
const result = await graphs.profile.invoke({
|
|
394
|
+
userId: context.userId,
|
|
395
|
+
operationMode: 'generate',
|
|
396
|
+
forceUpdate: true,
|
|
397
|
+
});
|
|
398
|
+
const _generateProfileGraphMs = Date.now() - _generateProfileGraphStart;
|
|
399
|
+
_generateProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _generateProfileGraphMs });
|
|
400
|
+
// If user info is insufficient, ask conversationally
|
|
401
|
+
if (result.needsUserInfo) {
|
|
402
|
+
return needsClarification({
|
|
403
|
+
missingFields: result.missingUserInfo || ['social_urls', 'full_name'],
|
|
404
|
+
message: "I need a bit more information to create your profile. Could you share your full name and any social links (LinkedIn, GitHub, or X/Twitter)?",
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
if (result.error) {
|
|
408
|
+
return error(result.error);
|
|
409
|
+
}
|
|
410
|
+
if (result.profile) {
|
|
411
|
+
return success({
|
|
412
|
+
created: true,
|
|
413
|
+
message: "Profile generated from your account data.",
|
|
414
|
+
profile: {
|
|
415
|
+
name: result.profile.identity.name,
|
|
416
|
+
bio: result.profile.identity.bio,
|
|
417
|
+
location: result.profile.identity.location,
|
|
418
|
+
skills: result.profile.attributes.skills,
|
|
419
|
+
interests: result.profile.attributes.interests,
|
|
420
|
+
},
|
|
421
|
+
_graphTimings: [{ name: 'profile', durationMs: _generateProfileGraphMs, agents: result.agentTimings ?? [] }],
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
return error("Failed to create profile. Please try again.");
|
|
425
|
+
},
|
|
426
|
+
});
|
|
427
|
+
const updateUserProfile = defineTool({
|
|
428
|
+
name: "update_user_profile",
|
|
429
|
+
description: "Updates the user's existing profile. For the current user's profile, profileId can be omitted and the tool will use their profile. Use ONE call per request with all changes in action (and details if needed). For profile URLs call scrape_url first, then pass scraped content in details.",
|
|
430
|
+
querySchema: z.object({
|
|
431
|
+
profileId: z.string().optional().describe("Optional profile id from read_user_profiles; omit for current user's profile"),
|
|
432
|
+
action: z.string().describe("What to do: one or more changes, e.g. 'update bio to X', 'add Python to skills'"),
|
|
433
|
+
details: z.string().optional().describe("Additional context or pasted content"),
|
|
434
|
+
}),
|
|
435
|
+
handler: async ({ context, query }) => {
|
|
436
|
+
// Use profileGraph query mode to validate profile existence and get id
|
|
437
|
+
const _updateQueryProfileGraphStart = Date.now();
|
|
438
|
+
const _updateQueryProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
|
|
439
|
+
_updateQueryProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
|
|
440
|
+
const queryResult = await graphs.profile.invoke({ userId: context.userId, operationMode: 'query' });
|
|
441
|
+
const _updateQueryProfileGraphMs = Date.now() - _updateQueryProfileGraphStart;
|
|
442
|
+
_updateQueryProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _updateQueryProfileGraphMs });
|
|
443
|
+
if (!queryResult.readResult?.hasProfile && !queryResult.profile) {
|
|
444
|
+
return error("You don't have a profile yet. Use create_user_profile first.");
|
|
445
|
+
}
|
|
446
|
+
const existingProfileId = queryResult.readResult?.profile?.id;
|
|
447
|
+
const providedProfileId = query.profileId?.trim();
|
|
448
|
+
if (providedProfileId && existingProfileId && providedProfileId !== existingProfileId) {
|
|
449
|
+
return error("Invalid profileId. Use the profile id from read_user_profiles.");
|
|
450
|
+
}
|
|
451
|
+
const inputForProfile = [query.action, query.details].filter(Boolean).join("\n") || (query.details ?? query.action);
|
|
452
|
+
if (!inputForProfile.trim()) {
|
|
453
|
+
return error("Please specify what to update (e.g. action: 'update bio to X').");
|
|
454
|
+
}
|
|
455
|
+
// Execute update directly
|
|
456
|
+
const _updateWriteProfileGraphStart = Date.now();
|
|
457
|
+
const _updateWriteProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
|
|
458
|
+
_updateWriteProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
|
|
459
|
+
const _writeResult = await graphs.profile.invoke({
|
|
460
|
+
userId: context.userId,
|
|
461
|
+
operationMode: "write",
|
|
462
|
+
input: inputForProfile,
|
|
463
|
+
forceUpdate: true,
|
|
464
|
+
});
|
|
465
|
+
const _updateWriteProfileGraphMs = Date.now() - _updateWriteProfileGraphStart;
|
|
466
|
+
_updateWriteProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _updateWriteProfileGraphMs });
|
|
467
|
+
if (_writeResult.error) {
|
|
468
|
+
return error(_writeResult.error);
|
|
469
|
+
}
|
|
470
|
+
return success({
|
|
471
|
+
message: "Profile updated.",
|
|
472
|
+
_graphTimings: [
|
|
473
|
+
{ name: 'profile', durationMs: _updateQueryProfileGraphMs, agents: queryResult.agentTimings ?? [] },
|
|
474
|
+
{ name: 'profile', durationMs: _updateWriteProfileGraphMs, agents: _writeResult.agentTimings ?? [] },
|
|
475
|
+
],
|
|
476
|
+
});
|
|
477
|
+
},
|
|
478
|
+
});
|
|
479
|
+
const completeOnboarding = defineTool({
|
|
480
|
+
name: "complete_onboarding",
|
|
481
|
+
description: "Marks onboarding as complete. Call this ONLY after the user has explicitly confirmed their profile is correct. Do NOT call this until the user says 'yes', 'looks good', 'that's right', or similar confirmation.",
|
|
482
|
+
querySchema: z.object({}),
|
|
483
|
+
handler: async ({ context }) => {
|
|
484
|
+
const currentOnboarding = context.user.onboarding ?? {};
|
|
485
|
+
if (currentOnboarding.completedAt) {
|
|
486
|
+
logger.verbose("Onboarding already completed, skipping", { userId: context.userId });
|
|
487
|
+
return success({ message: "Onboarding already completed." });
|
|
488
|
+
}
|
|
489
|
+
await userDb.updateUser({
|
|
490
|
+
onboarding: {
|
|
491
|
+
...currentOnboarding,
|
|
492
|
+
completedAt: new Date().toISOString(),
|
|
493
|
+
},
|
|
494
|
+
});
|
|
495
|
+
const autoJoinIds = (process.env.AUTO_JOIN_INDEX_IDS ?? '')
|
|
496
|
+
.split(',')
|
|
497
|
+
.map(id => id.trim())
|
|
498
|
+
.filter(Boolean);
|
|
499
|
+
for (const indexId of autoJoinIds) {
|
|
500
|
+
try {
|
|
501
|
+
await database.addMemberToIndex(indexId, context.userId, 'member');
|
|
502
|
+
}
|
|
503
|
+
catch (err) {
|
|
504
|
+
logger.warn('Auto-join index failed (non-fatal)', { indexId, userId: context.userId, error: err instanceof Error ? err.message : String(err) });
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
logger.info("Onboarding completed", { userId: context.userId, autoJoinedIndexes: autoJoinIds.length });
|
|
508
|
+
return success({ message: "Onboarding complete." });
|
|
509
|
+
},
|
|
510
|
+
});
|
|
511
|
+
return [readUserProfiles, createUserProfile, updateUserProfile, completeOnboarding];
|
|
512
|
+
}
|
|
513
|
+
//# sourceMappingURL=profile.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.tools.js","sourceRoot":"","sources":["../../src/tools/profile.tools.ts"],"names":[],"mappings":"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"}
|