@burdenoff/microfe-crewfoundry 2026.801.1 → 2026.827.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/crewfoundry/components/forms/FormModal.d.ts.map +1 -1
- package/dist/crewfoundry/components/forms/FormModal.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsResourcingPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/ProjectsResourcingPagePage.js +153 -69
- package/dist/crewfoundry/pages/ProjectsResourcingPagePage.js.map +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.d.ts +9 -0
- package/dist/crewfoundry/store/crewfoundryStore.d.ts.map +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.js +41 -32
- package/dist/crewfoundry/store/crewfoundryStore.js.map +1 -1
- package/dist/utils/pageContext.d.ts.map +1 -1
- package/dist/utils/pageContext.js +20 -24
- package/dist/utils/pageContext.js.map +1 -1
- package/package.json +2 -2
|
@@ -13,35 +13,31 @@ function e() {
|
|
|
13
13
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
var t = [
|
|
17
|
+
["hiring/job-details-page", "CREWFOUNDRY_JOB_POSTING"],
|
|
18
|
+
["hr/employee-profile-page", "CREWFOUNDRY_EMPLOYEE"],
|
|
19
|
+
["teams/team-detail-page", "CREWFOUNDRY_TEAM"],
|
|
20
|
+
["teams/team-settings-page", "CREWFOUNDRY_TEAM"],
|
|
21
|
+
["projects/project-details-page", "CREWFOUNDRY_PROJECT"],
|
|
22
|
+
["learning/course-details-page", "CREWFOUNDRY_COURSE"],
|
|
23
|
+
["learning/course-learning-page", "CREWFOUNDRY_COURSE"],
|
|
24
|
+
["marketplace/service-details-page", "CREWFOUNDRY_SERVICE"]
|
|
25
|
+
];
|
|
19
26
|
function n(e, n) {
|
|
20
|
-
let r = new URLSearchParams(n);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
[/^\/crewfoundry\/learning\/courses\/([^/]+)$/, "CREWFOUNDRY_COURSE"],
|
|
28
|
-
[/^\/crewfoundry\/marketplace\/services\/([^/]+)$/, "CREWFOUNDRY_SERVICE"]
|
|
29
|
-
]) {
|
|
30
|
-
let i = t(n, e);
|
|
31
|
-
if (i) return {
|
|
32
|
-
entityType: r,
|
|
33
|
-
entityId: i[1],
|
|
34
|
-
metadata: { routePattern: n.source }
|
|
27
|
+
let r = new URLSearchParams(n), i = e.split("/").filter(Boolean), a = i.slice(-2).join("/"), o = r.get("id");
|
|
28
|
+
if (o) {
|
|
29
|
+
let e = t.find(([e]) => e === a);
|
|
30
|
+
if (e) return {
|
|
31
|
+
entityType: e[1],
|
|
32
|
+
entityId: o,
|
|
33
|
+
metadata: { route: a }
|
|
35
34
|
};
|
|
36
35
|
}
|
|
37
|
-
let
|
|
38
|
-
let t = e.split("/").filter(Boolean);
|
|
39
|
-
return t.length > 2 ? t[t.length - 1] : void 0;
|
|
40
|
-
})();
|
|
36
|
+
let s = r.get("tab") ?? (i.length > 2 ? i[i.length - 1] : void 0);
|
|
41
37
|
return {
|
|
42
|
-
activeTab:
|
|
38
|
+
activeTab: s ?? void 0,
|
|
43
39
|
metadata: {
|
|
44
|
-
...
|
|
40
|
+
...s ? { activeTab: s } : {},
|
|
45
41
|
...r.get("selectedId") ? { selectedId: r.get("selectedId") } : {}
|
|
46
42
|
}
|
|
47
43
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageContext.js","names":[],"sources":["../../src/utils/pageContext.ts"],"sourcesContent":["/**\n * Page context gathering for CrewFoundry.\n *\n * Captures the user's current browser context to be sent alongside every\n * assistant prompt for better AI awareness.\n */\n\ninterface ConversationContextShape {\n entityType?: string;\n entityId?: string;\n activeTab?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PageContext {\n // `currentUrl` matches the agent's allowed-context-key contract.\n currentUrl: string;\n currentPage: string;\n entityType?: string;\n entityId?: string;\n platform: string;\n version: string;\n viewportSize: string;\n userAgent: string;\n timestamp: string;\n}\n\nexport function gatherPageContext(): PageContext {\n const url = window.location.href;\n const pathSegments = window.location.pathname.split('/').filter(Boolean);\n const currentPage = pathSegments.slice(0, 3).join('/') || 'home';\n const entity = resolveCrewFoundryConversationContext(\n window.location.pathname,\n window.location.search\n );\n\n return {\n currentUrl: url,\n currentPage,\n entityType: entity.entityType,\n entityId: entity.entityId,\n platform: 'crewfoundry',\n version: import.meta.env.VITE_APP_VERSION ?? '2026.704.1',\n viewportSize: `${window.innerWidth}x${window.innerHeight}`,\n userAgent: navigator.userAgent,\n timestamp: new Date().toISOString(),\n };\n}\n\
|
|
1
|
+
{"version":3,"file":"pageContext.js","names":[],"sources":["../../src/utils/pageContext.ts"],"sourcesContent":["/**\n * Page context gathering for CrewFoundry.\n *\n * Captures the user's current browser context to be sent alongside every\n * assistant prompt for better AI awareness.\n */\n\ninterface ConversationContextShape {\n entityType?: string;\n entityId?: string;\n activeTab?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PageContext {\n // `currentUrl` matches the agent's allowed-context-key contract.\n currentUrl: string;\n currentPage: string;\n entityType?: string;\n entityId?: string;\n platform: string;\n version: string;\n viewportSize: string;\n userAgent: string;\n timestamp: string;\n}\n\nexport function gatherPageContext(): PageContext {\n const url = window.location.href;\n const pathSegments = window.location.pathname.split('/').filter(Boolean);\n const currentPage = pathSegments.slice(0, 3).join('/') || 'home';\n const entity = resolveCrewFoundryConversationContext(\n window.location.pathname,\n window.location.search\n );\n\n return {\n currentUrl: url,\n currentPage,\n entityType: entity.entityType,\n entityId: entity.entityId,\n platform: 'crewfoundry',\n version: import.meta.env.VITE_APP_VERSION ?? '2026.704.1',\n viewportSize: `${window.innerWidth}x${window.innerHeight}`,\n userAgent: navigator.userAgent,\n timestamp: new Date().toISOString(),\n };\n}\n\n/**\n * Detail surfaces that identify a single record, keyed by their `<section>/<page>`\n * route.\n *\n * Every detail route in `CrewFoundryRoutes` is a flat two-segment path with the\n * record id in the `id` SEARCH PARAM — `/crewfoundry/hiring/job-details-page?id=…`\n * — never a path segment. Matching is done on the last two path segments rather\n * than an absolute path so the mapping survives the shell mounting the MFE under\n * a different `basePath`.\n *\n * `CREWFOUNDRY_CANDIDATE` is deliberately absent: candidates are selected inside\n * `hiring/candidates-page` without writing an id to the URL, so no navigable\n * location identifies one. Adding a pattern for it would only ever produce a\n * context key that never fires.\n */\nconst ENTITY_ROUTES: ReadonlyArray<readonly [route: string, entityType: string]> = [\n ['hiring/job-details-page', 'CREWFOUNDRY_JOB_POSTING'],\n ['hr/employee-profile-page', 'CREWFOUNDRY_EMPLOYEE'],\n ['teams/team-detail-page', 'CREWFOUNDRY_TEAM'],\n ['teams/team-settings-page', 'CREWFOUNDRY_TEAM'],\n ['projects/project-details-page', 'CREWFOUNDRY_PROJECT'],\n ['learning/course-details-page', 'CREWFOUNDRY_COURSE'],\n ['learning/course-learning-page', 'CREWFOUNDRY_COURSE'],\n ['marketplace/service-details-page', 'CREWFOUNDRY_SERVICE'],\n];\n\nexport function resolveCrewFoundryConversationContext(\n pathname: string,\n search: string\n): ConversationContextShape {\n const params = new URLSearchParams(search);\n const segments = pathname.split('/').filter(Boolean);\n const route = segments.slice(-2).join('/');\n const entityId = params.get('id');\n\n if (entityId) {\n const matched = ENTITY_ROUTES.find(([candidateRoute]) => candidateRoute === route);\n if (matched) {\n return {\n entityType: matched[1],\n entityId,\n metadata: { route },\n };\n }\n }\n\n const activeTab =\n params.get('tab') ?? (segments.length > 2 ? segments[segments.length - 1] : undefined);\n\n return {\n activeTab: activeTab ?? undefined,\n metadata: {\n ...(activeTab ? { activeTab } : {}),\n ...(params.get('selectedId') ? { selectedId: params.get('selectedId') } : {}),\n },\n };\n}\n"],"mappings":";AA2BA,SAAgB,IAAiC;CAC/C,IAAM,IAAM,OAAO,SAAS,MAEtB,IADe,OAAO,SAAS,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,CACvC,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,QACpD,IAAS,EACb,OAAO,SAAS,UAChB,OAAO,SAAS,OACjB;AAED,QAAO;EACL,YAAY;EACZ;EACA,YAAY,EAAO;EACnB,UAAU,EAAO;EACjB,UAAU;EACV,SAA6C;EAC7C,cAAc,GAAG,OAAO,WAAW,GAAG,OAAO;EAC7C,WAAW,UAAU;EACrB,4BAAW,IAAI,MAAM,EAAC,aAAa;EACpC;;AAkBH,IAAM,IAA6E;CACjF,CAAC,2BAA2B,0BAA0B;CACtD,CAAC,4BAA4B,uBAAuB;CACpD,CAAC,0BAA0B,mBAAmB;CAC9C,CAAC,4BAA4B,mBAAmB;CAChD,CAAC,iCAAiC,sBAAsB;CACxD,CAAC,gCAAgC,qBAAqB;CACtD,CAAC,iCAAiC,qBAAqB;CACvD,CAAC,oCAAoC,sBAAsB;CAC5D;AAED,SAAgB,EACd,GACA,GAC0B;CAC1B,IAAM,IAAS,IAAI,gBAAgB,EAAO,EACpC,IAAW,EAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,EAC9C,IAAQ,EAAS,MAAM,GAAG,CAAC,KAAK,IAAI,EACpC,IAAW,EAAO,IAAI,KAAK;AAEjC,KAAI,GAAU;EACZ,IAAM,IAAU,EAAc,MAAM,CAAC,OAAoB,MAAmB,EAAM;AAClF,MAAI,EACF,QAAO;GACL,YAAY,EAAQ;GACpB;GACA,UAAU,EAAE,UAAO;GACpB;;CAIL,IAAM,IACJ,EAAO,IAAI,MAAM,KAAK,EAAS,SAAS,IAAI,EAAS,EAAS,SAAS,KAAK,KAAA;AAE9E,QAAO;EACL,WAAW,KAAa,KAAA;EACxB,UAAU;GACR,GAAI,IAAY,EAAE,cAAW,GAAG,EAAE;GAClC,GAAI,EAAO,IAAI,aAAa,GAAG,EAAE,YAAY,EAAO,IAAI,aAAa,EAAE,GAAG,EAAE;GAC7E;EACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/microfe-crewfoundry",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.827.1",
|
|
4
4
|
"description": "Burdenoff CrewFoundry Microfrontend",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"zustand": "^5.0.0"
|
|
102
102
|
},
|
|
103
103
|
"publishConfig": {
|
|
104
|
-
"access": "
|
|
104
|
+
"access": "public"
|
|
105
105
|
},
|
|
106
106
|
"overrides": {
|
|
107
107
|
"lodash": ">=4.17.21",
|