From e9f81c6f83b104fa87ee0442cfc745e22de40b23 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Oct 2023 12:27:57 +0000 Subject: [PATCH 1/3] Bump @babel/traverse from 7.22.15 to 7.23.2 Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.15 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 62 +++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc4dae6..98caa2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "0.0.1", "license": "MIT", "dependencies": { - "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@fluentui/react": "^8.52.3", "@mui/icons-material": "^5.14.14", @@ -688,12 +687,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", - "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -754,22 +753,22 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -912,9 +911,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz", - "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } @@ -956,9 +955,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.15.tgz", - "integrity": "sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1082,19 +1081,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.15.tgz", - "integrity": "sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1103,12 +1102,12 @@ } }, "node_modules/@babel/types": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.15.tgz", - "integrity": "sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.15", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1195,6 +1194,7 @@ "version": "11.11.1", "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", From eddb8521e2542be07bce3dbe7ecf31cdc6ccfeb1 Mon Sep 17 00:00:00 2001 From: Chandima Ranaweera Date: Mon, 23 Oct 2023 05:56:43 +0000 Subject: [PATCH 2/3] Create webpack.yml --- .github/workflows/webpack.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/webpack.yml diff --git a/.github/workflows/webpack.yml b/.github/workflows/webpack.yml new file mode 100644 index 0000000..31e1f75 --- /dev/null +++ b/.github/workflows/webpack.yml @@ -0,0 +1,28 @@ +name: NodeJS with Webpack + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [16.x, 18.x] + + steps: + - uses: actions/checkout@v3 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Build + run: | + npm install + npm run build From 92e0d85fa1698306b2a45b8896e675ef9cebc093 Mon Sep 17 00:00:00 2001 From: Chandima Ranaweera Date: Fri, 27 Oct 2023 13:04:26 +0530 Subject: [PATCH 3/3] use system prompt --- src/services/openai.ts | 7 +++-- src/taskpane/components/App.tsx | 46 ++++++++++++++++----------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/services/openai.ts b/src/services/openai.ts index 84a9fbc..6a37655 100644 --- a/src/services/openai.ts +++ b/src/services/openai.ts @@ -10,12 +10,15 @@ export class OpenAiApi { }); } // Asynchronous function to generate text from the OpenAI API - async generateText(prompt, model = "gpt-3.5-turbo", max_tokens = 500, temperature = 0.85) { + async generateText(systemPrompt, prompt, model = "gpt-3.5-turbo", max_tokens = 500, temperature = 0.85) { // Send a request to the OpenAI API to generate text try { const response = await this.openAI.chat.completions.create({ model, - messages: [{ role: "user", content: prompt }], + messages: [ + { role: "system", content: systemPrompt }, + { role: "user", content: prompt }, + ], max_tokens, n: 1, temperature, diff --git a/src/taskpane/components/App.tsx b/src/taskpane/components/App.tsx index 0376ef4..c908d6a 100644 --- a/src/taskpane/components/App.tsx +++ b/src/taskpane/components/App.tsx @@ -23,9 +23,9 @@ export interface AppState { showModalEdit: boolean; showModalAdd: boolean; showPopup: boolean; - promtPreset: any[]; + promptPreset: any[]; selectedIndex: number; - promptFromat: string; + promptFormat: string; } export default class App extends React.Component { @@ -35,11 +35,11 @@ export default class App extends React.Component { listItems: [], apiKey: "", presetFormat: "", - promptFromat: "", + promptFormat: "", showModalEdit: false, showModalAdd: false, showPopup: false, - promtPreset: [], + promptPreset: [], selectedIndex: 0, }; } @@ -53,13 +53,13 @@ export default class App extends React.Component { const result = Office.context.document.settings.get("promtPreset"); { const promtPreset = JSON.parse(result) || []; - this.setState({ promtPreset }); + this.setState({ promptPreset: promtPreset }); } } toggleModalEdit = () => { - if (this.state.promtPreset.length > 0) { + if (this.state.promptPreset.length > 0) { if (this.state.selectedIndex === 0) { this.populateEditFields(0); } @@ -71,7 +71,7 @@ export default class App extends React.Component { toggleModalAdd = () => { this.setState({ - promptFromat: 'convert this text' + promptFormat: 'Act as a experienced solutions arechitect. Convert following text into professional text' }); this.setState((prevState) => ({ showModalAdd: !prevState.showModalAdd, @@ -98,17 +98,17 @@ export default class App extends React.Component { // Create a new item to add to promtPreset const newItem = { format: this.state.presetFormat, - promptFromat: this.state.promptFromat, + promptFromat: this.state.promptFormat, }; // Add the new item to the existing promtPreset - const updatedPromtPreset = [...this.state.promtPreset, newItem]; + const updatedPromtPreset = [...this.state.promptPreset, newItem]; // Save the updated promtPreset settings after converting to JSON Office.context.document.settings.set("promtPreset", JSON.stringify(updatedPromtPreset)); Office.context.document.settings.saveAsync((result) => { if (result.status === Office.AsyncResultStatus.Succeeded) { console.log("Custom setting saved successfully"); - this.setState({ promtPreset: updatedPromtPreset }); // Update state with the new promtPreset + this.setState({ promptPreset: updatedPromtPreset }); // Update state with the new promtPreset } else { console.error("Error saving custom setting: " + result.error.message); } @@ -118,16 +118,16 @@ export default class App extends React.Component { // Function to populate the editing modal fields with the values of the selected item populateEditFields = (index) => { - const selectedPreset = this.state.promtPreset[index]; + const selectedPreset = this.state.promptPreset[index]; if (selectedPreset != "" && selectedPreset != "") { this.setState({ selectedIndex: index, presetFormat: selectedPreset.format, - promptFromat: selectedPreset.promptFromat, + promptFormat: selectedPreset.promptFromat, // Set other modal fields if needed }); } - console.log("Custom setting" + this.state.promptFromat); + console.log("Custom setting" + this.state.promptFormat); }; onChangeDropdown = (value, index) => { this.setState({ presetFormat: value }); @@ -144,10 +144,10 @@ export default class App extends React.Component { const updatedItem = { format: this.state.presetFormat, - promptFromat: this.state.promptFromat, + promptFromat: this.state.promptFormat, }; - const updatedPromtPreset = [...this.state.promtPreset]; + const updatedPromtPreset = [...this.state.promptPreset]; updatedPromtPreset[selectedIndex] = updatedItem; Office.context.document.settings.set("promtPreset", JSON.stringify(updatedPromtPreset)); @@ -155,7 +155,7 @@ export default class App extends React.Component { if (result.status === Office.AsyncResultStatus.Succeeded) { console.log("Custom setting saved successfully"); this.setState({ - promtPreset: updatedPromtPreset, + promptPreset: updatedPromtPreset, selectedIndex: -1, }); } else { @@ -176,11 +176,9 @@ export default class App extends React.Component { const word = words.load(); await context.sync(); const openai = new OpenAiApi(this.state.apiKey); - const prompt = `${this.state.promptFromat}', ${word.text.trim()}.`; - const converted = await openai.generateText(prompt); + const converted = await openai.generateText(this.state.promptFormat, word.text.trim()); console.log(converted); - console.log(prompt.toString()); words.insertText(converted, "Replace"); await context.sync(); @@ -230,7 +228,7 @@ export default class App extends React.Component { className="ms-dropbtn" onChange={(e) => this.onChangeDropdown(e.target.value, e.target.selectedIndex)} > - {this.state.promtPreset.map((preset, index) => ( + {this.state.promptPreset.map((preset, index) => ( @@ -268,11 +266,11 @@ export default class App extends React.Component { @@ -314,8 +312,8 @@ export default class App extends React.Component { className="ms-input-3-1" title="Your Prompt" style={{ fontSize: "15.rem", width: "243px", height: "243px" }} - value={this.state.promptFromat} - onChange={(e) => this.setState({ promptFromat: e.target.value })} + value={this.state.promptFormat} + onChange={(e) => this.setState({ promptFormat: e.target.value })} >